HDU 1754 I Hate It
Posted IKnowYou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章