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

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

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

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
int left,right,max;
}tree[];
int num[];
char ch;
int t1,t2;
int build(int root,int left,int right){
tree[root].left=left;
tree[root].right=right;
if(left==right) return tree[root].max=num[left]; int a,b,mid;
mid=(left+right)/;
a=build(*root,left,mid);
b=build(*root+,mid+,right);
return tree[root].max=max(a,b);
} int find(int root,int left,int right){
if(right<tree[root].left||left>tree[root].right) return ;
if(left<=tree[root].left&&tree[root].right<=right) return tree[root].max; int a,b;
a=find(*root,left,right);
b=find(*root+,left,right);
return max(a,b);//find时不能赋值
} int update(int root,int pos,int val){
if(pos<tree[root].left||pos>tree[root].right) return tree[root].max;
if(pos==tree[root].left&&pos==tree[root].right) return tree[root].max=val; int a,b;
a=update(*root,pos,val);
b=update(*root+,pos,val);
return tree[root].max=max(a,b);
}
int n,m;
int main(){
while(scanf("%d%d",&n,&m)!=EOF){
memset(num,,sizeof num);
memset(tree,,sizeof tree);
for(int i=;i<=n;i++){
scanf("%d",num+i);
}
build(,,n);
for(int i=;i<m;i++){
getchar();
scanf("%c%d%d",&ch,&t1,&t2);
if(ch=='Q'){
int res=find(,t1,t2);
printf("%d\n",res);
}
else{
update(,t1,t2);
}
}
} }

[HDU1754]I Hate It线段树裸题的更多相关文章

  1. POJ 3468 线段树裸题

    这些天一直在看线段树,因为临近期末,所以看得断断续续,弄得有些知识点没能理解得很透切,但我也知道不能钻牛角尖,所以配合着刷题来加深理解. 然后,这是线段树裸题,而且是最简单的区间增加与查询,我参考了A ...

  2. BZOJ1067&P2471 [SCOI2007]降雨量[线段树裸题+细节注意]

    dlntqlwsl 很裸的一道线段树题,被硬生生刷成了紫题..可能因为细节问题吧,我也栽了一次WA50分.不过这个隐藏条件真的对本菜鸡来说不易发现啊. 未知的年份连续的就看成一个就好了,把年份都离散化 ...

  3. CPU监控 线段树裸题

    LINK:bzoj3064 此题甚好码了20min停下来思考的时候才发现不对的地方有点坑... 还真不好写来着 可这的确是线段树的裸题...我觉得我写应该没有什么大问题 不过思路非常的紊乱 如果是自己 ...

  4. 【LOJ6029】「雅礼集训 2017 Day1」市场(线段树裸题)

    点此看题面 大致题意: 维护序列,支持区间加法,区间除法(向下取整),区间求\(min\)和区间求和. 线段树维护区间除法 区间加法.区间求\(min\)和区间求和都是线段树基本操作,因此略过不提. ...

  5. HDU1166 线段树裸题 区间求和

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  6. HDU 4893 线段树裸题

    Wow! Such Sequence! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  7. cdoj 1324 卿学姐与公主 线段树裸题

    卿学姐与公主 Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  8. POJ2777(线段树裸题)

    题目:http://poj.org/problem?id=2777 别忘了各地的return: 有可能输入的L<R,手动swap: 似乎是多组输入? pushup和pushdown的位置. (原 ...

  9. [AHOI 2009] 维护序列(线段树模板题)

    1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec  Memory Limit: 64 MB Description 老师交给小可可一个维护数列的任务,现在小 ...

随机推荐

  1. Data Structure Binary Tree: Populate Inorder Successor for all nodes

    http://www.geeksforgeeks.org/populate-inorder-successor-for-all-nodes/ #include <iostream> #in ...

  2. Linux查看硬盘使用情况

    df df - report file system disk space usage df是查看文件系统磁盘使用情况的命令.如: # df -h Filesystem Size Used Avail ...

  3. Map集合按照value和key进行排序

    最近由于特殊的业务需求,需要做相关数据排序,下面就贴出其中的将map集合中按照value或者key进行排序的代码,后面再具体详说. /** * map 集合排序 * @param map * @ret ...

  4. POJ 2492 并查集 A Bug's Life

    #include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> ...

  5. 同一台电脑关于多个SSH KEY管理

    运用shh -T -v git@github.com查看具体出错信息,再根据信息来调试    原文链接: http://yijiebuyi.com/blog/f18d38eb7cfee860c117d ...

  6. SpringCloud-服务的消费者(rest+ribbon)

    SpringCloud-服务的消费者(rest+ribbon) 在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的.Spring Cloud有两种服务调用 ...

  7. winform 中的Anchor 和 Dock 属性设置

    在设计窗体时,这两个属性特别有用,如果用户认为改变窗口的大小并不容易,应确保窗口看起来不显得很乱,并编写许多代码行来达到这个目的,许多程序解决这个问题是地,都是禁止给窗口重新设置大小,这显然是解决问题 ...

  8. hdu 2050 折线分割平面(递推公式)

    折线分割平面 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  9. ZOJ 2724 Windows Message Queue (二叉堆,优先队列)

    思路:用优先队列 priority_queue,简单 两种方式改变队列 的优先级 (默认的是从大到小) #include<iostream> #include<queue> # ...

  10. C++quickSort

    void QuickSort1(int *s,int left,int right){ int i,j,t,pivot; if(left>right) return; if(left<ri ...