文本编辑器 未完成 Treap
#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e6+1e5;
unsigned int SEED = 17;
inline int Rand(){
SEED=SEED*1103515245+12345;
return SEED;
}
typedef pair<int,int> P;
struct TP{
int lc[maxn],rc[maxn],fix[maxn],wgt[maxn],size[maxn],rev[maxn];
char val[maxn];
int tot,root;
void init(){
memset(rev,0,sizeof rev);
tot=1;root=0;
lc[tot]=rc[tot]=rev[tot]=0;
}
int node(char v){
lc[tot]=rc[tot]=0;
fix[tot]=Rand();
wgt[tot]=size[tot]=1;
rev[tot]=0;
val[tot]=v;
return tot++;
}
void pd(int o){
if(rev[o]&1){
swap(lc[o],rc[o]);
if(lc[o]) rev[lc[o]]+=rev[o];
if(rc[o]) rev[rc[o]]+=rev[o];
}
rev[o]=0;
}
void pu(int o){
size[o]=wgt[o];
size[o]+=size[lc[o]]+size[rc[o]];
}
void print(int o){
if(lc[o]) print(lc[o]);
printf("%c",val[o]);
if(rc[o]) print(rc[o]);
}
int merge(int a,int b){
if(!a) return b;
if(!b) return a;
pd(a);pd(b);
if(fix[a]>fix[b]){
rc[a]=merge(rc[a],b);
pu(a);
return a;
}
else{
lc[b]=merge(a,lc[b]);
pu(b);
return b;
}
}
P split(int a,int k){
if(!a) return P(0,0);
P p;
pd(a);
if(size[lc[a]]>=k){
p=split(lc[a],k);
lc[a]=p.second;
pu(a);
p.second=a;////
}
else{
p=split(rc[a],k-size[a]-1);//
rc[a]=p.first;
pu(a);
p.first=a;
}
return p;
}
void insert(int k,int len){
char c; int tmp;
P p=split(root,k);
scanf("%c",&c);
for(int i = 1; i <= len; i++){
scanf("%c",&c);
tmp=node(c);
p.first=merge(p.first,tmp);
}
root=merge(p.first,p.second);
}
void del(int k,int len){
P x,y;
x=split(root,k);
y=split(x.second,len);
root=merge(x.first,y.second);
}
}tp;
int main(){
P x,y;
int n,now,num;char str[111];
now=0;
tp.init();
scanf("%d",&n);
for(int i = 1; i <= n; i++){
scanf("%s",str);
if(str[0]=='M'){
scanf("%d",&now);
}
if(str[0]=='I'){
scanf("%d",&num);
tp.insert(now,num);
}
if(str[0]=='D'){
scanf("%d",&num);
tp.del(now,num);
}
if(str[0]=='R'){
scanf("%d",&num);
x=tp.split(tp.root,now);
y=tp.split(x.second,num);
tp.rev[y.first]++;
x.second=tp.merge(y.first,y.second);
tp.root=tp.merge(x.first,x.second);
}
if(str[0]=='G'){
x=tp.split(tp.root,now);
y=tp.split(x.second,1);
tp.print(y.first);printf("\n");
x.second=tp.merge(y.first,y.second);
tp.root=tp.merge(x.first,x.second);
}
if(str[0]=='P'){
now--;
}
if(str[0]=='N'){
now++;
}
}
}
文本编辑器 未完成 Treap的更多相关文章
- [NOI2003]文本编辑器 [Fhq Treap]
[NOI2003]文本编辑器 没啥好说的 就是个板子 #include <bits/stdc++.h> // #define int long long #define rep(a , b ...
- 原生JS实现简单富文本编辑器2
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 富文本编辑器Simditor的简易使用
最近打算自己做一个博客系统,并不打算使用帝国cms或者wordpress之类的做后台管理!自己处于学习阶段也就想把从前台到后台一起谢了.好了,废话不多说了,先来看看富文本编辑器SimDitor,这里是 ...
- 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范
昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...
- 关于SMARTFORMS文本编辑器出错
最近在做ISH的一个打印功能,SMARTFORM的需求本身很简单,但做起来则一波三折. 使用环境是这样的:Windows 7 64bit + SAP GUI 740 Patch 5 + MS Offi ...
- 基于trie树的具有联想功能的文本编辑器
之前的软件设计与开发实践课程中,自己构思的大作业题目.做的具有核心功能,但是还欠缺边边角角的小功能和持久化数据结构,先放出来,有机会一点点改.github:https://github.com/chu ...
- UEditor百度富文本编辑器--让编辑器自适应宽度的解决方案
UEditor百度富文本编辑器的initialFrameWidth属性,默认值是1000. 不能够自适应屏幕宽度.如图1: 刚开始的时候,我是直接设置initialFrameWidth=null的.效 ...
- [bzoj1269][AHOI2006文本编辑器editor] (splay模版题 or pb_ds [rope]大法)
Description 这些日子,可可不和卡卡一起玩了,原来可可正废寝忘食的想做一个简单而高效的文本编辑器.你能帮助他吗?为了明确任务目标,可可对“文本编辑器”做了一个抽象的定义: 文本:由0个或 ...
- Bzoj1269 [AHOI2006]文本编辑器editor
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3678 Solved: 1380 Description 这些日子,可可不和卡卡一起玩了,原来可可正 ...
随机推荐
- opennebula 镜像池
{ "IMAGE_POOL": { "IMAGE": [ { ", ", ", "TEMPLATE": { & ...
- 数据库sql 开窗函数
--本文采用Oracle数据库测试,前4个查询为一组,后2个查询为一组,每组前面的查询是为了推出最后的查询 --创建表,为了简化处理,字段类型都采用varcharcreate table tb_sc( ...
- 安装CentOS 6网络配置问题
安装CentOS 6网络配置问题 今天决定把家中的CentOS从5升级至6.但安装完CentOS 6.2之后发现eth0没有像往常一样通过DHCP自动获取IP.打开“/etc/sysconfig/ne ...
- Reddit指南
一.简介 Reddit是网页新鲜事件和热点事件的源头,它也是互联网最有趣的地方和有高度组织的链接集中处. 二.指南 http://article.yeeyan.org/view/523415/45 ...
- 2、awk的输出
1.常见的输出格式整理 awk '{print "this is " $1, $2, $1*$2, NR, NF, $NF}' file1 ###字符输出,字段输出,运算输出, ...
- 实践作业3:白盒测试----简单介绍被测系统DAY4
本次被测软件是高校学生信息管理系统,和上次黑盒测试选用一样的系统,这样做的好处在于我们对系统比较熟悉,而且可以更好的比较黑盒测试与白盒测试的区别,采用MySQL Workbench 6.3,在MyEc ...
- ASP.NET 5 Middleware, Or Where Has My HttpModule Gone?
31 March 2015 13:22 ASP.NET 5 has been largely rewritten from the ground up, and incorporates some r ...
- LightOJ 1282 Leading and Trailing (数学)
题意:求 n^k 的前三位和后三位. 析:后三位,很简单就是快速幂,然后取模1000,注意要补0不全的话,对于前三位,先取10的对数,然后整数部分就是10000....,不用要,只要小数部分就好,然后 ...
- 编写高质量代码改善C#程序的157个建议——建议44:理解委托中的协变
建议44:理解委托中的协变 委托中的泛型变量天然是部分支持协变的.为什么是“部分支持协变”?看下面示例: class Program { public delegate T GetEmployeeHa ...
- 【Head First Java 读书笔记】(二)类与对象
前篇当中,代码都放在main()里面,那根本不是面向对象的做法. 椅子大战(对象如何改变你的一生) 程序规格: 在图形接口画出四方形,圆形和三角形,当用户点选图形时,图形需要顺时针转360度并依据形状 ...