hdu 1754
来源:互联网 发布:瘦大腿知乎 编辑:程序博客网 时间:2024/05/16 14:39
题目
PushUp是改为求其最大值,update是单点值的替换
#include<iostream>#include<cstdio>using namespace std;#define maxn 200005#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define inf 1<<30struct Tree{ int l,r,num;}tree[maxn<<2];void PushUp(int rt){ tree[rt].num=max(tree[rt<<1].num,tree[rt<<1|1].num);}void build(int l,int r,int rt){ tree[rt].l=l; tree[rt].r=r; if(l==r){ scanf("%d",&tree[rt].num); return ; } int m=(l+r)>>1; build(lson); build(rson); PushUp(rt);}void update(int pos,int val,int rt){ int l,r; l=tree[rt].l; r=tree[rt].r; if(l==r){ tree[rt].num=val; return ; } int m=(l+r)>>1; if(pos<=m) update(pos,val,rt<<1); else update(pos,val,rt<<1|1); PushUp(rt);}int query(int x,int y,int rt){ int l,r; l=tree[rt].l; r=tree[rt].r; if(x==l&&r==y){ return tree[rt].num; } int m=(l+r)>>1,ans=-inf; if(x<=m) ans=max(ans,query(x,min(m,y),rt<<1)); if(m<y) ans=max(ans,query(max(m+1,x),y,rt<<1|1)); return ans;}int main(){ int n,m; while(~scanf("%d%d",&n,&m)){ build(1,n,1); char ch[10]; while(m--) { scanf("%s",ch); int a,b; scanf("%d%d",&a,&b); if(ch[0]=='Q') printf("%d\n",query(a,b,1)); else update(a,b,1); } } return 0;}
- hdu 1754
- hdu 1754
- hdu 1754
- HDU 1754
- hdu 1754
- HDU 1754
- hdu 1754
- hdu 1754
- hdu 1754
- HDU 1754
- hdu 1754
- hdu 1754
- hdu 1754
- hdu 1754
- hdu 1754
- HDU 1754
- hdu 1754
- hdu 1754
- HDU-4475
- 图的遍历(深度优先遍历)
- 关于this class is not key value coding
- Cenos6.0以上 Xen安装
- python调用其他程序
- hdu 1754
- 最全的JAVA API获取源
- 还原当年创业:屌丝逆袭后的华丽转身 (zz)
- windows下nginx安装、配置与使用
- java 调 cmd 没反应
- Ubuntu常用命令大全
- 《iOS网络编程与云端应用最佳实践》上线了
- HTTP协议之代理
- PL/SQL学习汇总