【HDOJ】【1754】I Hate It
2015-03-06 10:00
162 查看
线段树
这是一道线段树的裸题……带单点修改的RMQ为什么我会想到写这么一道傻逼题呢?是因为这样……
//HDOJ 1754 #include<cmath> #include<vector> #include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #define rep(i,n) for(int i=0;i<n;++i) #define F(i,j,n) for(int i=j;i<=n;++i) #define D(i,j,n) for(int i=j;i>=n;--i) #define pb push_back #define CC(a,b) memset(a,b,sizeof(a)) using namespace std; int getint(){ int v=0,sign=1; char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') sign=-1; ch=getchar();} while(isdigit(ch)) {v=v*10+ch-'0'; ch=getchar();} return v*sign; } const int N=200010,INF=~0u>>2; const double eps=1e-8; /*******************template********************/ int t[N<<2],n,m; void update(int p,int v){ for(t[p+=n]=v,p>>=1;p;p>>=1) t[p]=max(t[p+p],t[p+p^1]); } int ans; void query(int l,int r){ for(l=l+n-1,r=r+n+1;l^r^1;l>>=1,r>>=1){ if (!(l&1)) ans=max(t[l^1],ans); if ( r&1) ans=max(t[r^1],ans); } } int main(){ #ifndef ONLINE_JUDGE freopen("input.txt","r",stdin); // freopen("output.txt","w",stdout); #endif while(scanf("%d%d",&n,&m)!=EOF){ CC(t,0); F(i,1,n) t[i+n]=getint(); D(i,n-1,1) t[i]=max(t[2*i],t[2*i+1]);//这句就是build建树…… char s[4]; int x,y; F(i,1,m){ scanf("%s",s); x=getint(); y=getint(); if (s[0]=='Q') {ans=0; query(x,y); printf("%d\n",ans);} if (s[0]=='U') update(x,y); } } return 0; }
zkw线段树(218MS 4296K)
相关文章推荐
- hdoj 1754 I Hate It【线段树&&二叉树】【线段树求最值】
- hdoj-1754 I Hate It (线段树)
- 20140719 「线段树 - 点替换,区间最值」 HDOJ 1754 I Hate It
- HDOJ 1754 I Hate It 【线段树节点更新&&求区间最大值】
- HDOJ1754(I Hate It)
- hdoj1754 I Hate It【线段树区间最大值维护+单点更新】
- hdoj 1754 I Hate It 线段树(二)
- hdoj 1754 I Hate It【线段树】
- HDOJ 1754 I Hate It 线段树
- HDOJ 1754 I Hate It
- HDOJ 1754 I Hate It(线段树入门)
- hdoj 1754 I Hate It【线段树】
- HDOJ 1754 I Hate It 解题报告
- HDOJ 1754 I Hate It(线段树单点更新)
- HDOJ1754 I Hate It 【线段树】
- hdoj 1754 I Hate It 【线段树】
- HDOJ 1754 I Hate It (线段树单点更新)
- hdoj&nbsp;1754&nbsp;I&nbsp;Hate&nbsp;It(线段树)
- HDU 1754:I Hate It(线段树-单点更新)
- hdu 1754 I Hate It 线段树