fhqtreap的速度果然很快 花了时间学了下指针写法

没有旋转 只有分裂以及合并操作 其实还是蛮好写的

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n,m;
struct node{
node *l,*r;
int v,sz,rev,rnd,tag,mx;
void init(){sz=; rnd=rand();}
void revs(){rev^=; swap(l,r);}
void add(int w){tag+=w; mx+=w; v+=w;}
void up(){
sz=; mx=v;
if(l) sz+=l->sz,mx=max(mx,l->mx);
if(r) sz+=r->sz,mx=max(mx,r->mx);
}
void dn(){
if(rev){
if(l) l->revs();
if(r) r->revs();
rev=;
}
if(tag){
if(l) l->add(tag);
if(r) r->add(tag);
tag=;
}
}
void split(node*&lw,node*&rw,int k){
if(!this){lw=; rw=; return ;}
int ls=l?l->sz:;
dn();
if(k<=ls){
l->split(lw,l,k);
rw=this;
}
else{
r->split(r,rw,k-ls-);
lw=this;
}
up();
}
}tr[M],*rt;
node* merge(node*a,node*b){
if(!a) return b;
if(!b) return a;
if(a->rnd>b->rnd){
a->dn();
a->r=merge(a->r,b);
a->up();
return a;
}{
b->dn();
b->l=merge(a,b->l);
b->up();
return b;
}
}
int main()
{
int k,w,l,r;
n=read(); m=read();
for(int i=;i<=n;i++) tr[i].init(),rt=merge(rt,tr+i);
while(m--){
k=read();
if(k==){
node *p1,*p2,*p3;
l=read(); r=read(); w=read();
rt->split(p2,p3,r);
p2->split(p1,p2,l-);
p2->add(w);
rt=merge(merge(p1,p2),p3);
}
else if(k==){
node *p1,*p2,*p3;
l=read(); r=read();
rt->split(p2,p3,r);
p2->split(p1,p2,l-);
p2->revs();
rt=merge(merge(p1,p2),p3);
}
else{
node *p1,*p2,*p3;
l=read(); r=read();
rt->split(p2,p3,r);
p2->split(p1,p2,l-);
printf("%d\n",p2->mx);
rt=merge(merge(p1,p2),p3);
}
}
return ;
}

bzoj1251: 序列终结者 fhqtreap写法的更多相关文章

  1. [BZOJ1251]序列终结者

    [BZOJ1251]序列终结者 试题描述 网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列 要支持几种操作:D.C.B.A.尤其是我们这里的某人,出模拟试题 ...

  2. [bzoj1251]序列终结者_splay

    序列终结者 bzoj-1251 题目大意:给定一个长度为n的正整数序列,支持区间加,区间反转,查询区间最大值.所有元素开始都是0. 注释:$1\le n\le 5\cdot 10^4$,操作个数不多于 ...

  3. bzoj1251 序列终结者(Splay Tree+懒惰标记)

    Description 网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列 要支持几种操作:D.C.B.A.尤其是我们这里的某人,出模拟试题,居然还出了一道这 ...

  4. BZOJ1251序列终结者——非旋转treap

    题目描述 网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列 要支持几种操作:D.C.B.A.尤其是我们这里的某人,出模拟试题,居然还出了一道这样的,真是没技 ...

  5. [bzoj1251]序列终结者——splay

    题目大意 网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列 要支持几种操作:D.C.B.A.尤其是我们这里的某人,出模拟试题,居然还出了一道这样的,真是没技 ...

  6. BZOJ1251 序列终结者(Splay平衡树)(占位)

    网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列 要支持几种操作:D.C.B.A.尤其是我们这里的某人,出模拟试题,居然还出了一道这样的,真是没技术含量…… ...

  7. 题解【bzoj1251 序列终结者】

    Description 维护三个操作:区间加,区间翻转,区间求最大值.\(n \leq 50000\) Solution fhqtreap大法好! 模板题(我是不会告诉你这篇题解是用来存个代码的 Co ...

  8. BZOJ1251——序列终结者

    给你一个数列,让你实现区间加上一个值,区间翻转,区间最大值 裸splay,懒标记一发即可 #include <cstdio> #include <cstdlib> #inclu ...

  9. bzoj1251 序列终结者(splay)

    人生第一发splay,写得巨丑,最后忘记了push_down以后要将子节点maintain 9k代码不忍直视 #define NDEBUG #include<cstdio> #includ ...

随机推荐

  1. Linux-Shell脚本编程-学习-4-Shell编程-操作数字-加减乘除计算

    对于任何一种编程语言都很重要的特性就是操作数字的能力,遗憾的是,对于shell脚本来说,这个过程比较麻烦,在shell脚本中有两种途径来进行数学运算操作. 1.expr 最开始的时候,shell提供了 ...

  2. jmeter-maven-plugin

    Maven编译JMeter, 使用的是jmeter-maven-plugin插件: <?xml version="1.0" encoding="UTF-8" ...

  3. weblogic中配置自定义filter和servlet

    情景:最近公司产品要接入其它厂商的单点服务器,本来我是在Tomcat上进行测试,使用的是spring boot 的注解方式@webFilter和@webServlet注解写过滤器和servlet类,启 ...

  4. 梳理 Opengl ES 3.0 (一)宏观着眼

    Opengl ES 可以理解为是在嵌入式设备上工作的一层用于处理图形显示的软件,是Opengl 的缩水版本. 下图是它的工作流程示意图: 注意图中手机左边的EGL Layer Opengl ES是跨平 ...

  5. GFS文件系统

      1.1 分布式文件系统 1.1.1 什么是分布式文件系统 相对于本机端的文件系统而言,分布式文件系统(英语:Distributed file system, DFS),或是网络文件系统(英语:Ne ...

  6. EM算法浅析(二)-算法初探

    EM算法浅析,我准备写一个系列的文章: EM算法浅析(一)-问题引出 EM算法浅析(二)-算法初探 一.EM算法简介 在EM算法之一--问题引出中我们介绍了硬币的问题,给出了模型的目标函数,提到了这种 ...

  7. java设计模式之模版方法模式以及在java中作用

    模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有 ...

  8. 软件工程项目组Z.XML会议记录 2013/09/25

    软件工程项目组Z.XML会议记录 [例会时间]2013年9月25日周三21:30-22:10 [例会形式]小组讨论 [例会地点]三号公寓楼会客厅 [例会主持]李孟 [会议记录]肖俊鹏 会议整体流程 签 ...

  9. Week 1 Team Homework #3 from Z.XML-软件工程在北航

    任务名称:软件工程在北航 任务要求:要求我们采访往届师兄师姐,收集他们对于软件工程这门课程的反馈.具体作业链接http://www.cnblogs.com/jiel/p/3311403.html 任务 ...

  10. 第十三次ScrumMeeting会议

    第十三次Scrum Meeting 时间:2017/12/1 地点:咖啡馆 人员:策划组美工组 名字 完成的工作 计划工作 蔡帜 完成公式的基本策划,Bug数量产生机制设计 科技树方面机制确定 游心 ...