HDU 1754 I Hate It

来源:互联网 发布:证券交易模型软件 编辑:程序博客网 时间:2024/05/23 16:35

线段树水题,复习一下线段树

#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;#define N 200005struct Node{int l,r,num,ma;}node[N*4];void build(int p,int l,int r){node[p].l=l;node[p].r=r;node[p].num=0;node[p].ma=0;if(l==r) return;int mid=(l+r)>>1;build(p*2,l,mid);build(p*2+1,mid+1,r);}void update(int p,int l,int r,int num){if(node[p].l>r||node[p].r<l) return;//printf("%d ",node[p].num);if(node[p].l==l&&node[p].r==r) {node[p].num=num;node[p].ma=num;//printf("%d ",node[p].num);return;}int mid=(node[p].l+node[p].r)>>1;if(r<=mid) update(p*2,l,r,num);else if(l>mid) update(p*2+1,l,r,num);else {update(p*2,l,r,num);update(p*2+1,l,r,num);}node[p].ma=max(node[p*2].ma,node[p*2+1].ma);}int query(int p,int l,int r){if(node[p].l>r||node[p].r<l) return -1;if(node[p].l>=l&&node[p].r<=r) {return node[p].ma;}return max(query(p*2,l,r),query(p*2+1,l,r));}int main(){#ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin);#endifint n,m;while(scanf("%d%d",&n,&m)!=EOF){int tmp,i;build(1,1,n);for(i=1;i<=n;i++) {scanf("%d",&tmp);update(1,i,i,tmp);}char c;for(i=0;i<m;i++){//printf("%d %d\n",i,m);int A,B;getchar();scanf("%c%d%d",&c,&A,&B);if(c=='Q') printf("%d\n",query(1,A,B));else update(1,A,A,B);//printf("klsdajf");}}return 0;}


0 0
原创粉丝点击