首页 > 代码库 > HDU 1754 I Hate It
HDU 1754 I Hate It
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1754
源代码:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int MAXN=200000; int a[MAXN],m[MAXN<<2]; inline void Pushup(int rt){ m[rt]=max(m[rt<<1],m[rt<<1|1]); } void build(int l,int r,int rt){ if(l==r){ m[rt]=a[l]; return ; } build(l,(l+r)>>1,rt<<1); build((l+r)/2+1,r,rt<<1|1); Pushup(rt); } void update(int k,int value,int l,int r,int rt){ if(l==r){ m[rt]=value; return ; } int mid=(l+r)>>1; if(k<=mid){ update(k,value,l,mid,rt<<1); }else{ update(k,value,mid+1,r,rt<<1|1); } Pushup(rt); } int query(int a,int b,int l,int r,int rt){ if(a>r||b<l) return 0; if(a<=l&&b>=r) return m[rt]; else{ int mid=(l+r)>>1; int vl=query(a,b,l,mid,rt<<1); int vr=query(a,b,mid+1,r,rt<<1|1); return max(vl,vr); } } int main(){ int N,M; char chioce[10]; while(scanf("%d%d",&N,&M)!=EOF){ for(int i=1;i<=N;i++) scanf("%d",&a[i]); build(1,N,1); while(M--){ scanf("%s",chioce); int a,b; scanf("%d%d",&a,&b); if(chioce[0]==‘Q‘) printf("%d\n",query(a,b,1,N,1)); else update(a,b,1,N,1); } } }
HDU 1754 I Hate It
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。