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

[HDU1754]I Hate It线段树裸题

时间:2017-05-06 10:34:41      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:std   type   pid   main   裸题   else   str   roo   定义   

http://acm.hdu.edu.cn/showproblem.php?pid=1754

解题关键:刚开始死活超时,最后发现竟然是ch,和t1、t2每次循环都定义的锅,以后养成建全局变量的习惯。

注意背模板时,find时最后无赋值

 

 

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 struct node{
 5     int left,right,max;
 6 }tree[800002];
 7 int num[200002];
 8 char ch;
 9 int t1,t2;
10 int build(int root,int left,int right){
11     tree[root].left=left;
12     tree[root].right=right;
13     if(left==right) return tree[root].max=num[left];
14     
15     int a,b,mid;
16     mid=(left+right)/2;
17     a=build(2*root,left,mid);
18     b=build(2*root+1,mid+1,right);
19     return tree[root].max=max(a,b);
20 }
21 
22 int find(int root,int left,int right){
23     if(right<tree[root].left||left>tree[root].right) return 0;
24     if(left<=tree[root].left&&tree[root].right<=right) return tree[root].max;
25     
26     int a,b;
27     a=find(2*root,left,right);
28     b=find(2*root+1,left,right);
29     return max(a,b);//find时不能赋值 
30 }
31 
32 int update(int root,int pos,int val){
33     if(pos<tree[root].left||pos>tree[root].right) return tree[root].max;
34     if(pos==tree[root].left&&pos==tree[root].right) return tree[root].max=val;
35     
36     int a,b;
37     a=update(2*root,pos,val);
38     b=update(2*root+1,pos,val);
39     return tree[root].max=max(a,b);
40 }
41 int n,m;
42 int main(){
43     while(scanf("%d%d",&n,&m)!=EOF){
44         memset(num,0,sizeof num);
45         memset(tree,0,sizeof tree);
46         for(int i=1;i<=n;i++){
47             scanf("%d",num+i);
48         }
49         build(1,1,n);
50         for(int i=0;i<m;i++){
51             getchar();
52             scanf("%c%d%d",&ch,&t1,&t2);
53             if(ch==Q){
54                 int res=find(1,t1,t2);
55                 printf("%d\n",res);
56             }
57             else{
58                 update(1,t1,t2);
59             }
60         }
61     }
62     
63 }

 

[HDU1754]I Hate It线段树裸题

标签:std   type   pid   main   裸题   else   str   roo   定义   

原文地址:http://www.cnblogs.com/elpsycongroo/p/6815472.html

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