PASTE Splay

题目描述

  我们用文本处理器来处理一个特殊的文本文件,该文本文件共有N行文本,每一行文本仅包含一个自然数,第一行为1、第二行为2,以此类推至N行为自然数N。
  假设对该文本文件执行一次“剪切和粘贴”操作含义如下:首先选定连续的若干行文本,“剪切”操作将选定的文本从文件中剪下,而“粘贴”操作将剪切下来的文本插入到文件中的其他地方。
  编写一个程序求出在进行了连续若干次“剪切和粘贴”操作后,文本文件中前十行的内容。

题目大意

将区间内的一段数字移动到另一个地方,求操作后的区间前10个数字。

数据范围

10<=n<=100000 1<=k<=1000

样例输入

13 3
6 12 1
2 9 0
10 13 8

样例输出

6
7
8
9
10
11
12
2
3
4

解题思路

  Splay 维护区间,如果要剪切,就先把区间旋转出来,再断边,在把要插入的地方旋转出来,连边。(虽然我并不知道这道题目的标解是什么。。)


Update:最后发现O(nk)的模拟可以直接过QAQ这里写图片描述

代码

#include <bits/stdc++.h>
#define Maxn 100005
using namespace std;
inline int Getint(){int x=0,f=1;char ch=getchar();while('0'>ch||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while('0'<=ch&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;}
int n,q;
struct splay{int f[Maxn],son[Maxn][2],size[Maxn],vl[Maxn],root;void PushUp(int v){if(v)size[v]=size[son[v][0]]+size[son[v][1]]+1;}void Rotate(int x){int fa=f[x],gr=f[fa],s=son[fa][1]==x,sn=son[x][!s];son[f[x]=gr][son[gr][1]==fa]=x;son[f[fa]=x][!s]=fa;son[f[sn]=fa][s]=sn;PushUp(sn);PushUp(fa);PushUp(x);}void Splay(int x,int goal){if(x==goal)return;while(f[x]!=goal){if(f[f[x]]!=goal&&(son[f[f[x]]][1]==f[x])==(son[f[x]][1]==x))Rotate(f[x]);Rotate(x);}if(!goal)root=x;}int Select(int pos){int p=root;while(size[son[p][0]]+1!=pos){if(pos<=size[son[p][0]])p=son[p][0];else pos-=size[son[p][0]]+1,p=son[p][1];}return p;}void Insert(int pos,int k){int u=Select(pos+1),v=Select(pos+2);Splay(u,0);Splay(v,u);son[v][0]=k;f[son[v][0]]=v;PushUp(v);PushUp(u);}int Delete(int L,int r){int u=Select(L),v=Select(r+2);Splay(u,0);Splay(v,u);f[son[v][0]]=0;PushUp(v);PushUp(u);int t=son[v][0];son[v][0]=0;return t;}void Build(int L,int r,int fa){if(L>r)return;int mid=(L+r)/2;if(L!=r)Build(L,mid-1,mid),Build(mid+1,r,mid);vl[mid]=(mid-1<=n?mid-1:0);PushUp(mid);f[mid]=fa;son[fa][mid>=fa]=mid;}void Init(){Build(1,n+2,0);root=n+3>>1;}
}Solver;
int main(){n=Getint(),q=Getint();Solver.Init();while(q--){int L=Getint(),r=Getint(),k=Getint();Solver.Insert(k,Solver.Delete(L,r));}for(int i=1;i<=10;i++)cout<<Solver.vl[Solver.Select(i+1)]<<"\n";return 0;
}

转载于:https://www.cnblogs.com/Cedric341561/p/6811006.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 用户空间通过makefile向程序传递参数

一. 用户空间 因为实际上进行预处理的只是Gcc工具&#xff0c;而make工具只是一个解决依赖关系的工具。所以问题就简化成如何通过make向gcc传递参数。通过简单的例子来说明&#xff1a;hello.c#include <stdio.h> void main(void) {#ifdef DEBUG printf("y…

Spring---基于Spring IOC的小程序

实现的功能以及各文件间的关系 IHelloMessage&#xff1a;一个接口&#xff0c;用于定义输出问候信息。 HelloWorld、HelloChina&#xff1a;接口的实现类。在这里表示人在不同的地方 Person&#xff1a;一个人物类&#xff0c;调用IHelloMessage接口&#xff0c;向用户输出问候…

Web开发者不可不知的16条原则

HTML已经走过了近20的发展历程。从HTML4到XHTML&#xff0c;再到最近十分火热的HTML5&#xff0c;它几乎见证了整个互联网的发展。但是&#xff0c;即便到现在&#xff0c;有很多基础的概念和原则依然需要开发者高度注意。下面&#xff0c;小编向大家介绍这些应该遵循的开发原则…

MIPI DSI协议介绍

原文地址&#xff1a;http://blog.csdn .NET/qq160816/article/details/19555957 一、MIPI MIPI&#xff08;移动行业处理器接口&#xff09;是Mobile Industry Processor Interface的缩写。MIPI&#xff08;移动行业处理器接口&#xff09;是MIPI联盟发起的为移动应用处理器制…

NSArray、NSDictionary、NSString存储、删改、遍历

NSString 创建一个NSString实例&#xff1a;NSString *str “this is string”;//字面量语法 常用API&#xff1a; stringWithFormat //创建动态字符串 -&#xff08;NSUInteger&#xff09;length //获取字符的数量 -isEqualToString: //判断两个字符串是否相等 -uppercaseSt…

2018.11.14成立我的博客

2018.11.14成立我的博客转载于:https://www.cnblogs.com/zengxx/p/9957509.html

130242014018-郑志良-第2次实验

一、实验目的 1&#xff0e;熟悉体系结构的风格的概念 2&#xff0e;理解和应用管道过滤器型的风格。 3、理解解释器的原理 4、理解编译器模型 二、实验环境 硬件&#xff1a; 软件&#xff1a;Python或任何一种自己喜欢的语言 三、实验内容 1、实现“四则运算”的简易翻译器。…

Hi3516A开发--挂载SD卡和U盘

一、SD卡 1、通过fdisk -l命令确认板子上的Linux系统是否识别SD卡 / # fdisk -l Disk /dev/mmcblk0: 63.8 GB, 63864569856 bytes 255 heads, 63 sectors/track, 7764 cylinders Units cylinders of 16065 * 512 8225280 bytes Device Boot Start …

【BZOJ 4170】 4170: 极光 (CDQ分治)

4170: 极光 Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 121 Solved: 64Description "若是万一琪露诺&#xff08;俗称rhl&#xff09;进行攻击&#xff0c;什么都好&#xff0c;冷静地回答她的问题来吸引她。对方表现出兴趣的话&#xff0c;那就慢慢地反问。在她考…

自动生成web服务器日志解析规则

2019独角兽企业重金招聘Python工程师标准>>> 当前web服务器的多样化使得访问日志的数据清洗变得越来越复杂&#xff0c;企业需要投入专业的数据清洗人员编写数据清洗规则&#xff08;解析规则或者解析正则&#xff09;&#xff0c;或者需要关心web服务器访问日志的生…

mybatis一级缓存二级缓存

一级缓存 Mybatis对缓存提供支持&#xff0c;但是在没有配置的默认情况下&#xff0c;它只开启一级缓存&#xff0c;一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下&#xff0c;我们使用同一个SqlSession对象调用一个Mapper方法&#xff0c;往往只执…

CMOS Sensor的调试分享

目前&#xff0c;包括移动设备在内的很多多媒体设备上都使用了摄像头&#xff0c;而且还在以很快的速度更新换代。目前使用的摄像头分为两种&#xff1a;CCD(Charge Couple Device电荷偶合器件)和 CMOS(Complementary Metal Oxide Semiconductor互补金属氧化物半导体)。这两种各…

利用反射修改final数据域

当final修饰一个数据域时&#xff0c;意义是声明该数据域是最终的&#xff0c;不可修改的。常见的使用场景就是eclipse自动生成的serialVersionUID一般都是final的。 另外还可以构造线程安全&#xff08;thread safe&#xff09;的immutable类&#xff0c;比如String&#xff0…

mysql简单创建数据库权限(待修改备注)

CREATE DATABASE web DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;一、环境&#xff1a;CentOS 6.8mysql 5.6二、背景给外包的工作人员提供我司某台服务器的 mysql 中某个数据库的访问权限。之所以要做限制&#xff0c;是防止他们对我司其他的数据库非法进行操作。三、…

Centos 能ping通域名和公网ip但是网站不能够打开,服务器拒绝了请求。打开80端口解决。...

博客搬迁&#xff0c;给你带来的不便&#xff0c;敬请谅解&#xff01; http://www.suanliutudousi.com/2017/10/29/centos-%E8%83%BDping%E9%80%9A%E5%9F%9F%E5%90%8D%E5%92%8C%E5%85%AC%E7%BD%91ip%E4%BD%86%E6%98%AF%E7%BD%91%E7%AB%99%E4%B8%8D%E8%83%BD%E5%A4%9F%E6%89%93…

ISP 图像传感器camera原理

1、Color Filter Array — CFA 随着数码相机、手机的普及&#xff0c;CCD/CMOS 图像传感器近年来得到广泛的关注和应用。 图像传感器一般都采用一定的模式来采集图像数据&#xff0c;常用的有 BGR 模式和 CFA 模式。BGR 模式是一种可直接进行显示和压缩等处理的图像数据模式&am…

51nod 1027 大数乘法

1027 大数乘法基准时间限制&#xff1a;1 秒 空间限制&#xff1a;131072 KB 分值: 0 难度&#xff1a;基础题收藏关注给出2个大整数A,B&#xff0c;计算A*B的结果。 Input第1行&#xff1a;大数A 第2行&#xff1a;大数B (A,B的长度 < 1000&#xff0c;A,B > 0&#xff…

file mmap

do_set_pmd统计参数只会在这里设置&#xff1a; add_mm_counter(vma->vm_mm, MM_FILEPAGES, HPAGE_PMD_NR);但是这貌似都是处理大页的情况哪&#xff0c;小页呢&#xff1f; alloc_set_pte中有函数&#xff1a;inc_mm_couter_fast(vma->vm_mm, mm_couter_file(page)&…

Linux链接库三(C跟C++之间动态库的相互调用)

http://www.cppblog.com/wolf/articles/74928.html http://www.cppblog.com/wolf/articles/77828.html http://www.jb51.net/article/34990.htm C和C之间库的互相调用 extern "C"的理解&#xff1a; 很多人认为"C"表示的C语言&#xff0c;实际并非如此&…

C#如何开发多语言支持的Winform程序

C# Winform项目多语言实现(支持简/繁/英三种语言)有很多种方案实现多语言&#xff0c;我在这里介绍一种最简单最容易理解的&#xff0c;作为教学材题应该从通俗易懂入手。在写这篇文章之前&#xff0c;本来想用枚举窗体对象成员的方式设置语言&#xff0c;但是找不到源代码了&a…