hdu 1754 I Hate It
来源:互联网 发布:win7红警网络点不进去 编辑:程序博客网 时间:2024/06/05 18:59
////HDU 1754 I Hate It (线段树模板题)更新一点的值 询问区间最大值#include<iostream>#include<stdio.h>#include<string.h>#define MAXX 5001000using namespace std;int A[MAXX] ;struct node{ int l ; int r ; int value ;} node[MAXX] ;int creattree (int ll , int rr , int i) // 创建线段树 将最大值更新在根节点{ int mid = (ll + rr) / 2; node[i].l = ll ; node[i].r = rr ; if (ll == rr) { node[i].value = A[ll] ; return node[i].value ; } else { node[i].value = max (creattree(ll , mid , 2*i),creattree(mid+1 , rr , 2*i+1)); return node[i].value ; }}void updata (int i , int pos , int d ) // 更改一点的值{ int mid ; node[i].value = max (node[i].value , d) ; mid = (node[i].l + node[i].r) / 2 ; if(node[i].l == node[i].r) return ; else if (pos > mid) // 更新右子树 updata(2*i+1 , pos , d) ; else // 更新左子树 updata(2*i , pos , d);}int query (int i , int ll , int rr){ int mid = (node[i].l + node[i].r) / 2 ; if(node[i].l == ll && node[i].r == rr ) return node[i].value ; if(ll <= mid && rr >= mid+1 ) //区间被分成两部分 return max (query(2*i , ll , mid),query(2*i+1 , mid+1 , rr)); else if(rr <= mid && ll<=mid ) //区间在右子树 return query(2*i , ll , rr) ; else //区间在左子树 return query(2*i+1 , ll , rr) ;}int main(){ int n , m , i , a , b ; char s ; while(scanf("%d%d",&n,&m)!=EOF) { for(i = 1 ; i <= n ; i++) { scanf("%d",&A[i]); } creattree(1 , n , 1 ); while(m--) { getchar(); scanf("%c%d%d",&s,&a,&b); if(s == 'U') { updata(1 , a , b ) ; } if(s == 'Q') { int ans = query(1 , a , b ); printf("%d\n",ans); } } } return 0;}
// 树状数组#include<stdio.h>#include<string.h>#include<string>#include<iostream>#define MAXX 201000using namespace std;int C[MAXX] ,n , A[MAXX];int lowbit(int x){ return x &(-x) ;}void init(){ for(int i=1 ; i <= n ; i++) { C[i]=A[i]; for(int j=1; j<lowbit(i) ; j<<=1) { C[i]=max(C[i],C[i-j]); } }}void add(int pos ,int d){ A[pos]=d; while(pos<=n) { C[pos]=max(C[pos],d); pos+=lowbit(pos); }// for(int i=pos; i<=n; i+=lowbit(i))// {// C[i]=d;// for(int j=1; j<lowbit(i); j<<=1)// {// C[i]=max(C[i],C[i-j]);// }// }}void query(int l, int r){ int ans=A[r]; while(1) { ans=max(ans,A[r]); if(r==l) break; for(r=r-1; r-l>=lowbit(r); r-=lowbit(r)) { ans=max(ans,C[r]); } } printf("%d\n",ans);}int main(){ int m , i ,l , r ; char s ; while (scanf("%d%d",&n,&m)!=EOF) { memset(C,0,sizeof(C)); for ( i = 1 ; i <= n ; i++ ) { scanf ("%d", &A[i]); } init(); while(m--) { getchar(); scanf("%c",&s); scanf("%d%d",&l,&r); if(s == 'U') { add(l,r); } if( s == 'Q') { query(l,r); } } } return 0 ;}
0 0
- 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 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(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 I Hate It
- hdu 1754 I hate it
- HDU 1754 I Hate It
- IOS中UILabel排版
- 11.4.2.1 使用延迟值进行缓存
- C语言中int main()和int main(void)区别
- Axure工具学习基本原型图的详解
- R - Misha and Changing Handles—STL(map)
- hdu 1754 I Hate It
- jquery省市联动
- Opencv源码解析------二值化
- 前端资源工具网址
- ActiveMQ初识及安装
- 文本框输入限制【不允许空格、只允许数字】
- 表单自动提交注意事项
- Linux shedule 的发展历史.
- 游戏任务成就体系的实现(一):业务分析及技术架构