博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1198 最大数 线段树水题
阅读量:6299 次
发布时间:2019-06-22

本文共 1658 字,大约阅读时间需要 5 分钟。

这道题模拟一下可以过,但是我们发现线段树也可以安全水过......

写的线段树只需要滋磁单点修改,区间求max即可

我一开始犯了一个很SB的错误:每次插入修改了t,然后疯狂爆0到怀疑人生...

而且我写的线段树还不明不白的碾了胡雨菲几年前写的。

1 #include 
2 #include
3 #include
4 using namespace std; 5 const int N = 200010; 6 typedef long long LL; 7 LL mo; 8 LL Max[N<<2]; 9 10 void build(int l,int r,int o)11 {12 Max[o]=-2147483647;13 if(l==r)14 {15 return;16 }17 int mid=(l+r)>>1;18 build(l,mid,o<<1);19 build(mid+1,r,o<<1|1);20 return;21 }22 23 void add(int x,int v,int l,int r,int o)24 {25 //printf("add:x=%d v=%d l=%d r=%d o=%d\n",x,v,l,r,o);26 if(l==x&&r==x)27 {28 //printf("Max[%d]=%d\n",o,v);29 Max[o]=v;30 return;31 }32 int mid=(l+r)>>1;33 if(x<=mid)add(x,v,l,mid,o<<1);34 else add(x,v,mid+1,r,o<<1|1);35 Max[o]=max(Max[o<<1],Max[o<<1|1]);36 return;37 }38 39 LL ask(int L,int R,int l,int r,int o)40 {41 if(L<=l&&r<=R) return Max[o];42 if(R
>1;44 return max(ask(L,R,l,mid,o<<1),ask(L,R,mid+1,r,o<<1|1));45 }46 47 int main()48 {49 LL m,top=1,x,t=0;char flag;50 scanf("%lld%lld",&m,&mo);51 build(1,m,1);52 for(int i=1;i<=m;i++)53 {54 cin>>flag>>x;55 if(flag=='Q')56 {57 if(!x) {printf("0\n");continue;}58 t=ask(top-x,top-1,1,m,1);59 printf("%lld\n",t);60 }61 else62 {63 64 add(top,(t+x)%mo,1,m,1);65 top++;66 }67 }68 return 0;69 }
AC代码:

 

转载于:https://www.cnblogs.com/huyufeifei/p/8718122.html

你可能感兴趣的文章
笨办法学 Python · 续 第七部分:大作业
查看>>
区块链应用 | 不要否认区块链十年来的进展,它已经改变了很多事情
查看>>
沃•云总机以互联网+SaaS模式助力河南房产行业信息化
查看>>
数据结构思维 第七章 到达哲学
查看>>
MAC上快速调出终端的设置(保持和Windows的操作一致)
查看>>
SQL更新id段之间的字段
查看>>
阿里云ECS,突发性能实例t5购买参考和使用建议
查看>>
.NET轻量级ORM框架Dapper入门精通
查看>>
量子卫星是何物?快戳进来涨姿势!
查看>>
AI诊断又有新算法,让人们提前10年知道自己是否会老年痴呆
查看>>
商用无人机被“锁”住了螺旋桨,送货机器人却已经开始满地跑了
查看>>
凯迪生态携手海通安恒,成功启动SAP实施项目
查看>>
Java的对象和类
查看>>
格式化字符串漏洞利用 一、引言
查看>>
Oracle NetSuite推出全球首款智能云套件
查看>>
软件项目进度控制表(自制)
查看>>
企业若不改进其IT运营模式则可能错失未来市场机遇
查看>>
基于epoll封装的事件回调miniserver
查看>>
天猫高管全面解读大快消2018新零售打法
查看>>
idea springboot热部署无效问题
查看>>