博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1531 I Hate It(线段树)
阅读量:6214 次
发布时间:2019-06-21

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

一节课。。。

#include
#include
#include
#include
#include
#define MAXN 200000 using namespace std;int a0[MAXN+5],st[MAXN*4+5]; //四倍void build(int o,int l,int r){ if(l==r) st[o]=a0[l]; else { int m=l+((r-l)>>1); build((o<<1),l,m); build((o<<1)|1,m+1,r); st[o]=max(st[o<<1],st[(o<<1)|1]); }}void exch(int o,int l,int r,int ind,int ans){ if(l==r) { st[o]=ans; return; } else { int m=l+((r-l)>>1); if(ind<=m) { exch((o<<1),l,m,ind,ans);//|1相当于+1 } else { exch((o<<1)|1,m+1,r,ind,ans); } } st[o]=max(st[o<<1],st[(o<<1)|1]);//第二次写时,忘记这步 :-(}int sear(int o,int l,int r,int ql,int qr){ if(qr
r)return 0; if(qr>=r&&ql<=l)return st[o]; int m=l+((r-l)>>1); return max(sear((o<<1),l,m,ql,qr),sear((o<<1)|1,m+1,r,ql,qr));}int main(){ //freopen("a.in","r",stdin); int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a0[i]); build(1,1,n); for(int i=1;i<=m;i++) { string c; int a,b; cin>>c; scanf("%d%d",&a,&b); if(c=="Q") printf("%d\n",sear(1,1,n,a,b)); else if(a0[a]

转载于:https://www.cnblogs.com/dfsac/p/6819791.html

你可能感兴趣的文章
grep及正则表达式系列---03
查看>>
CentOS服务器远程桌面解决方案之FreeNX
查看>>
Lync Server 2010迁移至Lync Server 2013故障排错 Part 2: Lync Server 迁移后部分用户无法移池问题...
查看>>
CentOS 7 下安装 mysql ,以及用到的命令
查看>>
OpenStack实践(九):Open vSwitch方式实现floating IP
查看>>
快速排序的题
查看>>
JDBC的事务
查看>>
软件测试的发展
查看>>
how to add custom objects to the process instance?
查看>>
Python爬虫入门(3-4):Urllib库的高级用法
查看>>
第五章(Web Service)
查看>>
Oracle 12c新特性对于业务上的一些影响总结
查看>>
Java逆向基础之AspectJ的Around方法修改方法体
查看>>
python中的try...except...finally函数
查看>>
oracle 11g rac 监听程序offline
查看>>
CNCF
查看>>
网络基础知识
查看>>
Python IO编程——操作文件和目录
查看>>
Exchange2010 Outlook自动发现
查看>>
Android绘图相关
查看>>