HDU 1754 I Hate It(线段树版)

题目链接

找最大,这里居然会超时。

 1 #include <stdio.h>

 2 #include <stdlib.h>

 3 #include <string.h>

 4 #define N 200001

 5 struct node

 6 {

 7     int l;

 8     int r;

 9     int v;

10 }tree[4*N];

11 int max(int a,int b)

12 {

13     return a>b?a:b;

14 }

15 void build(int l,int r,int rt)

16 {

17     int m;

18     tree[rt].l = l;

19     tree[rt].r = r;

20     if(l == r)

21     {

22         scanf("%d",&tree[rt].v);

23         return ;

24     }

25     m = (l+r)>>1;

26     build(l,m,rt<<1);

27     build(m+1,r,rt<<1|1);

28     tree[rt].v = max(tree[rt<<1].v,tree[rt<<1|1].v);

29 }

30 void update(int pos,int sc,int rt)

31 {

32     int m;

33     if(tree[rt].l == tree[rt].r)

34     {

35         tree[rt].v = sc;

36         return ;

37     }

38     m = (tree[rt].l + tree[rt].r) >> 1;

39     if(pos > m)

40     {

41         update(pos,sc,rt<<1|1);

42     }

43     else

44     {

45         update(pos,sc,rt<<1);

46     }

47     tree[rt].v = max(tree[rt<<1].v,tree[rt<<1|1].v);

48 }

49 int query(int L,int R,int rt)

50 {

51     int m;

52     if(L == tree[rt].l&&R == tree[rt].r)

53     {

54         return tree[rt].v;

55     }

56     m = (tree[rt].l + tree[rt].r) >> 1;

57     if(L > m)

58     {

59         return query(L,R,rt<<1|1);

60     }

61     else if(R <= m)

62     {

63         return query(L,R,rt<<1);

64     }

65     else

66     {

67         return  max(query(L,m,rt<<1),query(m+1,R,rt<<1|1));

68     }

69 }

70 int main()

71 {

72     int n,i,m,x,y;

73     char str[100];

74     while(scanf("%d%d%*c",&n,&m)!=EOF)

75     {

76         memset(tree,0,sizeof(tree));

77         build(1,n,1);

78         for(i = 1;i <= m;i ++)

79         {

80             scanf("%s%d%d",str,&x,&y);

81             if(str[0] == 'Q')

82             {

83                 printf("%d\n",query(x,y,1));

84             }

85             else if(str[0] == 'U')

86             {

87                 update(x,y,1);

88             }

89         }

90     }

91     return 0;

92 }

你可能感兴趣的:(HDU)