HDU 1754 I Hate It

发布时间:2017-3-25 1:48:27 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"HDU 1754 I Hate It",主要涉及到HDU 1754 I Hate It方面的内容,对于HDU 1754 I Hate It感兴趣的同学可以参考一下。

线段树单点更新第二题,这题就比上次有进步,交了一发就AC了哈哈哈。 还是很简单的,只不过是更新的时候更新成了区间的最大值。 下面是代码: #include <stdio.h> const int Maxn=200005; int node[Maxn<<2]; int max(int a,int b) { if(a<b)a=b; return a; } void PushUp(int tr) { node[tr]=max(node[tr<<1],node[tr<<1|1]); } void Build(int l,int r,int tr) { if(l==r) { scanf("%d",&node[tr]); return; } int m=(l+r)>>1; Build(l,m,tr<<1); Build(m+1,r,tr<<1|1); PushUp(tr); } int query(int L,int R,int l,int r,int tr) { if(L<=l&&r<=R)return node[tr]; int m=(l+r)>>1,ans=-1; if(L<=m)ans=max(ans,query(L,R,l,m,tr<<1)); if(R>m)ans=max(ans,query(L,R,m+1,r,tr<<1|1)); return ans; } void update(int p ,int num,int l,int r,int tr) { if(l==r) { node[tr]=num; return; } int m=(l+r)>>1; if(p<=m)update(p,num,l,m,tr<<1); else update(p,num,m+1,r,tr<<1|1); PushUp(tr); } int main() { int n,m; while(scanf("%d%d",&n,&m)!=EOF) { Build(1,n,1); char s[3]; int a,b; for(int i=0; i<m; i++) { scanf("%s",s); scanf("%d%d",&a,&b); if(s[0]=='Q')printf("%d\n",query(a,b,1,n,1)); else update(a,b,1,n,1); } } return 0; }

上一篇:类似百度添加或删除收藏的效果
下一篇:使用元胞自动机模拟大量个体间的相互作用

相关文章

关键词: HDU 1754 I Hate It

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款