hdu 1754 I Hate It 线段树-区间最值
2015-09-28 18:53
495 查看
[code]#include<bits/stdc++.h> using namespace std; typedef int ll; const int N=200000+5; int a ,ans; struct Tree { int left,right; ll maxv; }tree[4*N+10]; //建立线段树,如果是数组a1-an,可以build(1,1,n)来建立 void build(int id,int l,int r) { tree[id].left=l; tree[id].right=r; tree[id].maxv=0; if (l==r) { tree[id].maxv=a[l]; } else { int mid=(l+r)/2; build(id*2,l,mid); build(id*2+1,mid+1,r); tree[id].maxv=max(tree[id*2].maxv,tree[id].maxv); tree[id].maxv=max(tree[id*2+1].maxv,tree[id].maxv); } } //单点更新,id从1开始,pos为目标位置 void update(int id,int pos,ll val) { if (tree[id].left==tree[id].right) tree[id].maxv=val; else { tree[id].maxv=(val,tree[id].maxv); int mid=(tree[id].left+tree[id].right)/2; if (pos<=mid) update(id*2,pos,val); else update(id*2+1,pos,val); tree[id].maxv=max(tree[id*2].maxv,tree[id].maxv); tree[id].maxv=max(tree[id*2+1].maxv,tree[id].maxv); } } //查询范围内的和 void query(int id,int l,int r) { if (tree[id].left==l&&tree[id].right==r) { ans=max(tree[id].maxv,ans); return; } else { int mid=(tree[id].left+tree[id].right)/2; if (r<=mid) query(id*2,l,r); else if (l>mid) query(id*2+1,l,r); else { query(id*2,l,mid); query(id*2+1,mid+1,r); } } } int main() { int i,n,m,x,y; char cmd[20]; while(~scanf("%d%d",&n,&m)) { memset(a,0,sizeof(a)); for(i=1;i<=n;i++) scanf("%d",&a[i]); build(1,1,n); for(i=0;i<m;i++) { scanf("%s %d %d",cmd,&x,&y); if(cmd[0]=='Q') { ans=-1; query(1,x,y); printf("%d\n",ans); } else { update(1,x,y); } } } return 0; }
相关文章推荐
- 配置Tomcat的访问日志格式化输出
- 稀疏矩阵的抽象数据类型和一些基本操作的实现
- hdu 1754 I Hate It 线段树-区间最值
- noip2011 观光公交 (贪心)
- mybatis 模糊查询%问题
- Android 性能优化之使用MAT分析内存泄露问题
- Windows 7 注册串口工具mscomm32.ocx
- Android四大组件之Service小试牛刀
- How to convert a latex to pdf file
- 网络编程_get_异步-请求_获取网络数据
- Gem::RemoteFetcher::FetchError: Errno::ECONNRESET: Connection reset by peer - SSL_connect
- Codeforces Round #322 (Div. 2)
- ffmpeg常用命令总结
- c++模版
- OpenGL中glMatrixMode()函数以及视图变换,模型变换,投影变换,视口变换的理解
- Winxp虚拟机(含VC++及C++书籍资料)下载说明
- 程序员能力矩阵【转】
- popen()函数执行脚本,要用pclose()函数关闭
- 线性表基础&线性表应用:多项式
- Java默认构造函数的一些发现