hdu 1754 单点更新

题意:很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。

5 6

1 2 3 4 5

Q 1 5

U 3 6

Q 3 4

Q 4 5

U 2 9

Q 1 5

5

6

5

9

代码再次优化

 1 #include<cstdio>

 2 #include<iostream>

 3 #include<algorithm>

 4 #include<cstring>

 5 #include<cmath>

 6 #include<queue>

 7 using namespace std;

 8 int n,m,t;

 9 #define lson l,m,rt<<1

10 #define rson m+1,r,rt<<1|1

11 #define root 1,n,1

12 #define m ((l+r)>>1)

13 const int maxn=205555;

14 int cow[maxn];

15 int maxx[maxn<<2],minn[maxn<<2];

16 int mmax=-1,mmin=9999999;

17 void pushup(int rt){

18     maxx[rt]=max(maxx[rt<<1],maxx[rt<<1|1]);

19 }

20 void build(int l,int r,int rt){

21     if(l==r){

22         scanf("%d",&maxx[rt]);

23         return;

24     }

25     build(lson);

26     build(rson);

27     pushup(rt);

28 }

29 void query(int L,int R,int l,int r,int rt) {

30     if (L<=l&&r<=R){

31         mmax=max(mmax,maxx[rt]);

32         return;

33     }

34     int ret=0;

35     if(L<=m)  query(L,R,lson);

36     if(R>m)  query(L,R ,rson);

37 }

38 void update(int pos,int val,int l,int r,int rt)

39 {

40     if(l==r)    maxx[rt]=val;

41     else

42     {

43         if(pos<=m)  update(pos,val,lson);

44         else update(pos,val,rson);

45         pushup(rt);

46     }

47 }

48 int main()

49 {

50     int i,j,k;

51     #ifndef ONLINE_JUDGE

52     freopen("1.in","r",stdin);

53     #endif

54     int q;

55     while(scanf("%d%d",&n,&q)!=EOF)

56     {

57         build(root);

58         while(q--)

59         {

60             char s[10];

61             scanf("%s",s);

62             int a,b;

63             if(s[0]=='Q')

64             {

65                 scanf("%d%d",&a,&b);

66                 mmax=-99999;

67                 query(a,b,root);

68                 printf("%d\n",mmax);

69             }

70             else

71             {

72                 scanf("%d%d",&a,&b);

73                 update(a,b,root);

74             }

75         }

76     }

77     return 0;

78 }

 

你可能感兴趣的:(HDU)