COGS:地震(平衡树)

COGS上一道题。。。文件名是equake
还是又打了一遍板子。。。
加个lazy标记就行了。。。
注意查询时先下传标记(lazy)

// It is made by XZZ
#include<cstdio>
#include<algorithm>
#define Fname "equake"
using namespace std;
#define rep(a,b,c) for(rg int a=b;a<=c;a++)
#define drep(a,b,c) for(rg int a=b;a>=c;a--)
#define erep(a,b) for(rg int a=fir[b];a;a=nxt[a])
#define il inline
#define rg register
#define vd void
#define pr pair<point,point>
#define mp make_pair
typedef long long ll;
il int gi(){rg int x=0,f=1;rg char ch=getchar();while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();return x*f;
}
int seed=233333333;
il int Rand(){return seed=seed*48271ll%2147483647;}
typedef struct node* point;
point null;
struct node{int data,size,rand,maxx,lazy;point ls,rs;node(int dat){data=maxx=dat,lazy=0,size=1,rand=Rand(),ls=rs=null;}il vd down(){if(this==null)return;data+=lazy,maxx+=lazy,ls->lazy+=lazy,rs->lazy+=lazy,lazy=0;}il vd reset(){ls->down(),rs->down();size=ls->size+rs->size+1;maxx=max(max(ls->maxx,rs->maxx),data);}
};
point root;
il point build(int n){point stack[n+2],last;int top=0;rep(i,1,n){point now=new node(gi());last=null;while(top&&stack[top]->rand>now->rand)last=stack[top],stack[top--]->reset();if(top)stack[top]->rs=now;now->ls=last,stack[++top]=now;}while(top)stack[top--]->reset();return stack[1];
}
il point merge(point a,point b){if(a==null)return b;if(b==null)return a;if(a->rand<b->rand){a->down(),a->rs=merge(a->rs,b),a->reset();return a;}else{b->down(),b->ls=merge(a,b->ls),b->reset();return b;}
}
il pr split(point now,int num){if(now==null)return mp(null,null);now->down();point ls=now->ls,rs=now->rs;if(ls->size==num){now->ls=null,now->reset();return mp(ls,now);}if(ls->size+1==num){now->rs=null,now->reset();return mp(now,rs);}if(ls->size>num){pr T=split(ls,num);now->ls=T.second,now->reset();return mp(T.first,now);}else{pr T=split(rs,num-ls->size-1);now->rs=T.first,now->reset();return mp(now,T.second);}
}
il vd del(point now){if(now!=null)del(now->ls),del(now->rs),delete now;}
int main(){freopen(Fname".in","r",stdin);freopen(Fname".out","w",stdout);int a,b,n=gi(),m=gi();char opt;null=new node(-2e9);null->size=0;root=build(n);while(m--){opt=getchar();while(opt<'A'||opt>'Z')opt=getchar();if(opt=='I'){pr T=split(root,gi());root=merge(T.first,merge(build(gi()),T.second));}else{a=gi(),b=gi();pr T=split(root,a-1),TT=split(T.second,b-a+1);if(opt=='M'){root=merge(T.first,TT.second),del(TT.first);continue;}TT.first->down();if(opt=='R')TT.first->lazy=gi();else printf("%d\n",TT.first->maxx);root=merge(T.first,merge(TT.first,TT.second));}}del(root),delete null;return 0;
}

转载于:https://www.cnblogs.com/xzz_233/p/7356846.html

[cogs347]地震相关推荐

  1. iPhone 隐私新规下的“大地震”:四大平台损失近百亿美元,“连用户是男是女都分不清……”

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 大家有这样的经历吗?前一秒刚在聊天软件上跟朋友分享了一款产品,下一秒就能在其他 App 中看到这款产品的广告推送,不了解内情的人说不定还 ...

  2. 上海大学建了一个“突发事件语料库”,包括地震、恐怖袭击等5大类

    (来源:上海大学官网) 作者 | 阿司匹林 出品 | AI科技大本营(公众号ID:rgznai100) 本体最初是一个哲学上的概念,十多年前被引入计算机领域中作为知识表示的方法并被广泛使用.本体对于探 ...

  3. 进行三万多次地震训练后,他们发现了快速预测震动强度的新方法

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:大数据文摘本文约1000字,建议阅读5分钟DeepShake能 ...

  4. 光缆能预警地震?谷歌做到了!毫秒级反应速度,140万公里海缆有望成为报警器...

    贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 140万公里,这是全球海底光缆的总长度. 如今,这遍布全球的光缆网络,可能被赋予另一项重要使命:地震监测. 上周五,谷歌CEO皮猜发推宣布 ...

  5. 机器学习预测地震的未来

    上图是2011年克赖斯特彻奇地震造成的破坏,数千个较小的地震随之而来,这被称为余震.2011年2月,新西兰克赖斯特彻奇市遭遇了破坏性的地震.图像展示了6层高的坎特伯雷电视大楼成为废墟,并且该大楼在余震 ...

  6. matlab平滑曲线_说说地震波的那些事儿(二)——地震影响曲线

    原创:Eva哈哈哈 转载自微信公众号:非解构 做结构设计的朋友,一定很熟悉下面这张图.没错,它是抗规5.1.5条中的地震影响系数曲线.我们根据该曲线确定结构所受地震力的大小.作为结构抗震设计重要的一部 ...

  7. livechart 只显示 y 值_基于Python语言的SEGY格式地震数据读取与显示编程

    敬请关注<地学新视野> 摘要:本文简单介绍了SEG-Y地震数据文件格式,以及如何用Python语言编写读写SEG-Y格式的地震数据并绘制地震剖面,其中用到了Segyio和matplotli ...

  8. 如何设计一款地震高岗一派溪山千古秀的反爬虫?

    天地会 青木堂 地震高岗,一派溪山千古秀 门朝大海,三河合水万年流 没错,这正是<鹿鼎记>天地会的接头暗号. 天地会为什么需要接头暗号呢? 假设天地会赤火堂香主派人从京城前扬州将一封非常重 ...

  9. 收集了7000个地震回波后,机器学习发现了地下上千公里处的热岩床

    来源:大数据文摘 本文约1000字,建议阅读5分钟. 利用机器学习发现了地下上千公里处的热岩床! 借助无人监督的学习算法,地球物理学家发现了大片热的致密岩石,这些岩石位于地球表面以下将近3,000公里 ...

最新文章

  1. SQL语句调优 - 索引上的数据检索方法
  2. eclipse打可运行的jar
  3. 函数 php_PHP回调函数及匿名函数概念与用法详解
  4. 关于推荐和机器学习的几个网站
  5. Java实现消息消费
  6. Codeup-问题 A: 【字符串】最长回文子串
  7. 根据日期累计求和_excel条件求和技巧:应用SUMIF函数计算客户余款
  8. tf/idf_Neo4j:带密码的TF / IDF(和变体)
  9. 光端机的技术指标及构成有哪些?
  10. QT tableWidget的使用及其实例
  11. Android实现两台手机屏幕共享和远程控制
  12. 【备忘】老男孩IT教育_徐培成_大数据
  13. 软件测试之第一章 软件测试和测试环境
  14. var 和int定义变量的问题【C#】
  15. html与css常用标签大全
  16. 如何将文字转图片?手把手教你转换
  17. 艾默生流量计如何做好防爆工作
  18. 微信支付 生成付款二维码链接 并生成支付二维码图片 .net C#
  19. 关于红楼梦Python文本分析
  20. linux 两块硬盘做r0,本文是emp3r0r:Linux用户打造的Linux后渗透框架的后续。

热门文章

  1. idea 快捷键获取类的全限定类名(包名+类名)
  2. 盘点程序员必备的专业术语,值得看一看
  3. 计算机系统基础:计算机性能评价知识笔记
  4. 通过视觉直观感受7种常用的排序算法
  5. 如何能出令自己满意的代码
  6. SQL Server数据库设置自动备份策略
  7. 4个优化MongoDB的技巧
  8. win7 mysql msi_windows下的Mysql安装与基本使用(msi)
  9. vista下载_Vista和视图在游戏设计中的功能
  10. 案例研究设计与方法-罗伯_旭进口重新设计-用户体验案例研究