HDU 1754 I Hate It 线段树 单点更新 区间最大值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1754 I Hate It 线段树 单点更新 区间最大值相关的知识,希望对你有一定的参考价值。

技术分享
 1 #include<iostream>
 2 #include<string>
 3 #include<algorithm>
 4 #include<cstdlib>
 5 #include<cstdio>
 6 #include<set>
 7 #include<map>
 8 #include<vector>
 9 #include<cstring>
10 #include<stack>
11 #include<cmath>
12 #include<queue>
13 #include <bits/stdc++.h>
14 using namespace std;
15 
16 int MAX[4000001];
17 //int max(int a,int b)
18 //{
19 //    return a>b?a:b;
20 //}
21 void pushup(int rt)
22 {
23     MAX[rt]=max(MAX[rt<<1],MAX[(rt<<1)+1]);
24 }
25 void build(int l,int r,int rt)
26 {
27     if(l==r)
28     {
29         scanf("%d",&MAX[rt]);
30         return;
31     }
32     int m=(l+r)>>1;
33     build(l,m,rt<<1);
34     build(m+1,r,(rt<<1)+1);
35     pushup(rt);
36 }
37 void update(int p,int q,int l,int r,int rt)
38 {
39     if(l==r)
40     {
41         MAX[rt]=q;
42         return;
43     }
44     int m=(l+r)>>1;
45     if(p<=m)
46         update(p,q,l,m,rt<<1);
47     else
48         update(p,q,m+1,r,(rt<<1)+1);
49     pushup(rt);
50 }
51 int getmax(int L,int R,int l,int r,int rt)
52 {
53     if(L<=l&&r<=R)
54         return MAX[rt];
55     int m=(r+l)>>1;
56     int ret=0;
57     if(L<=m)
58         ret=max(ret,getmax(L,R,l,m,rt<<1));
59     if(R>m)
60         ret=max(ret,getmax(L,R,m+1,r,(rt<<1)+1));
61     return ret;
62 }
63 int main()
64 {
65     int n,m,a,b,i;
66     char c;
67     while(~scanf("%d %d",&n,&m))
68     {
69         build(1,n,1);
70         for(i=0; i<m; i++)
71         {
72             scanf("%*c%c%d %d",&c,&a,&b);//*c与getchar一样
73             if(c==Q)
74                 printf("%d\n",getmax(a,b,1,n,1));
75             else
76                 update(a,b,1,n,1);
77         }
78     }
79     return 0;
80 }
View Code

 

以上是关于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(线段树之单点更新 区间最值查询)