HDU 1754 I Hate It
来源:互联网 发布:抓小三软件 编辑:程序博客网 时间:2024/06/10 18:30
转载请注明出处:http://blog.csdn.net/a1dark
分析:继续单点更新、学线段树的时候尽量不要去看模板、自己慢慢分析、那样才是真的学会了、尽管变形依然能做出来、单点更新先就做到这里、
#include<stdio.h>#include<string.h>#define N 200005struct node{ int l,r; int max;}tree[N<<2];int a[N];int n,ans;int maxx(int a,int b){ if(a>b)return a; return b;}void create(int x,int l,int r){ tree[x].l=l; tree[x].r=r; int mid=(l+r)/2; if(l==r){ tree[x].max=a[l]; return; } create(x*2,l,mid); create(x*2+1,mid+1,r); tree[x].max=maxx(tree[x*2].max,tree[x*2+1].max);}void update(int x,int p,int num){ if(tree[x].l==p&&tree[x].r==p){ tree[x].max=num; return; } int mid=(tree[x].l+tree[x].r)/2; if(p<=mid) update(x*2,p,num); else update(x*2+1,p,num); tree[x].max=maxx(tree[x*2].max,tree[x*2+1].max);}void query(int x,int l,int r){ if(tree[x].l==l&&tree[x].r==r){ ans=maxx(ans,tree[x].max); return; } int mid=(tree[x].l+tree[x].r)/2; if(l>mid) query(x*2+1,l,r); else if(r<=mid) query(x*2,l,r); else{ query(x*2,l,mid); query(x*2+1,mid+1,r); }}int main(){ int m,i,x,y; char ch[5]; while(scanf("%d%d",&n,&m)!=EOF){ memset(a,0,sizeof(a)); for(i=1;i<=n ;i++) scanf("%d",&a[i]); create(1,1,n); while(m--){ scanf("%s%d%d",ch,&x,&y); if(ch[0]=='U'){ update(1,x,y); } if(ch[0]=='Q'){ ans=0; query(1,x,y); printf("%d\n",ans); } } } return 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控件介绍
- hashcode 和 equals
- VIM配置文件 .vimrc
- TCP/IP编程
- php+js实现图片的上传、裁剪、预览、提交示例
- HDU 1754 I Hate It
- 黑马程序员——完成项目的收获
- 开源虚拟化入门之Linux KVM虚拟化架构
- VC 仿QQ窗口靠边自动收缩隐藏效果
- 1022. Digital Library (30) @ PAT (Advanced Level) Practise
- 应用程序配置不正确,程序无法启动
- 数据结构之线性表----连续存储实现
- $.parseJSON(data)只支持标准的JSON
- 英宝通公开课