HDU-1754(线段树入门)
2012-08-04 22:53
351 查看
这个代码觉得还可以看,,而且.我觉得,这样的风格稍微适合我点,,,大神的代码还是有点接受不了,暂时先用这个吧...
大家看看.有什么可取之处.
代码:
大家看看.有什么可取之处.
代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> int t[222222]; struct Node{ int a; int b; int max; }tree[888888]; int max(int a,int b) { return a>=b?a:b; } void Pushup(int i) { tree[i].max=max(tree[i<<1].max,tree[i<<1|1].max); } void Buildtree(int i,int a,int b) { tree[i].a=a; tree[i].b=b; if(a==b) { scanf("%d",&tree[i].max); return; } int mid=(a+b)>>1; Buildtree(i<<1,a,mid); Buildtree(i<<1|1,mid+1,b); Pushup(i); } void update(int i,int a,int b) { if(tree[i].a==a&&tree[i].b==a) { tree[i].max=b; return; } int mid=(tree[i].a+tree[i].b)>>1; if(a<=mid) { update(i<<1,a,b); } else if(a>mid) { update(i<<1|1,a,b); } Pushup(i); } /*int query(int L,int R,int i,int a,int b) { if(L<=a&&b<=R) { return tree[i].max; } int mid=(a+b)>>1; int ans=0; if(L<=mid) ans=max(ans,query(L,R,i<<1,a,mid)); if(R>mid) ans=max(ans,query(L,R,i<<1|1,mid+1,b)); return ans; }*/ int query(int i,int a,int b) { if(tree[i].a==a&&tree[i].b==b) { return tree[i].max; } int mid=(tree[i].a+tree[i].b)>>1; int ans=0; if(b <= mid) ans=max(ans,query(i<<1,a,b)); else if(a > mid) ans=max(ans,query(i<<1|1,a,b)); else { ans = max(ans, query(i<<1, a, mid)); ans = max(ans, query(i<<1|1, mid+1, b)); } return ans; } int main() { int N,M; while(scanf("%d%d",&N,&M)!=EOF) { Buildtree(1,1,N); //printf("%d\n",max(2,-1)); // for(int i=1;i<=50;i++) // { // printf("i==%d___left==%d___right==%d___max=%d\n",i,tree[i].a,tree[i].b,tree[i].max); // } //system("pause"); for(int i=1;i<=M;i++) { char c[5]; int a,b; scanf("%s%d%d",c,&a,&b); if(c[0]=='Q') { int ans=query(1,a,b); printf("%d\n",ans); } else if(c[0]=='U') { update(1,a,b); } } } return 0; }
相关文章推荐
- HDU 1754 I Hate It【线段树入门题,单点替换,区间最值】
- 线段树入门HDU_1754
- hdu 1754 线段树入门 单点更新
- HDU 1754(线段树入门)
- 线段树 入门总结 hdu 1754 1161
- 线段树入门HDU_1754
- 线段树入门——HDU 1754
- hdu 1754 线段树入门(单点替换,区间最值)
- HDU-1754 I Hate It (线段树 入门题 点修改 区间查询)
- HDU 1754 I Hate It(入门线段树)
- HDU 1754 I Hate It(线段树入门,单点更新求最值)
- HDU 1754 I Hate It 线段树入门
- HDU 1754 I Hate It 线段树入门
- hdu 1754 线段树入门
- HDU 1754 I Hate It(线段树入门题)
- hdu 1754 I Hate It【线段树入门+模板详解】
- (HDU 1754)I Hate It 线段树区间查询入门,单点修改
- HDU1754——I Hate It(线段树入门)
- hdu 1754 I Hate It (线段树入门题、求区间段的最大值)
- hdu 1754 I Hate It(线段树入门)