码迷,mamicode.com
首页 > 其他好文 > 详细

hdu1754I Hate It

时间:2017-03-26 01:02:04      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:hup   blog   pac   shu   get   php   ref   hdu   blank   

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754

单点更新,查找区间最大值。

 1 #include<cstdio>
 2 #include<iostream>
 3 #define lson l,m,rt<<1
 4 #define rson m+1,r,rt<<1|1
 5 using namespace std;
 6 const int maxn=200010;
 7 int f[maxn<<2];
 8 inline pushup(int rt)
 9 {
10     f[rt]=max(f[rt<<1],f[rt<<1|1]);
11 }
12 
13 void build(int l,int r,int rt)
14 {
15     if(l==r)
16     {
17         scanf("%d",&f[rt]);
18         return ;
19     }
20     int m=(l+r)>>1;
21     build(lson);
22     build(rson);
23     pushup(rt);
24 }
25 
26 void update(int p,int sc,int l,int r,int rt)
27 {
28     if(l==r) {
29         f[rt]=sc;
30         return;
31     }
32     int m=(l+r)>>1;
33     if(p<=m) update(p,sc,lson);
34     else update(p,sc,rson);
35     pushup(rt);
36 }
37 
38 int query(int L,int R,int l,int r,int rt)
39 {
40     if(L<=l&&r<=R) return f[rt];
41     int m=(l+r)>>1;
42     int ans=-1;
43     if(L<=m) ans=max(ans,query(L,R,lson));
44     if(R>m) ans=max(ans,query(L,R,rson));
45     return ans;
46 }
47 
48 int main()
49 {
50     int n,m,a,b;
51     while(scanf("%d%d",&n,&m)!=EOF)
52     {
53         build(1,n,1);
54         char s[2];
55         while(m--)
56         {
57             scanf("%s%d%d",s,&a,&b);
58             if(s[0]==Q) printf("%d\n",query(a,b,1,n,1));
59             else update(a,b,1,n,1);
60         }
61 
62     }
63     return 0;
64 }

 

hdu1754I Hate It

标签:hup   blog   pac   shu   get   php   ref   hdu   blank   

原文地址:http://www.cnblogs.com/yijiull/p/6619091.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!