hdu 1754(种一棵线段树)
来源:互联网 发布:python web框架 编辑:程序博客网 时间:2024/05/23 22:35
感谢小鹏同学的耐心debug。。。。。。发现是少写一个return。。。导致调试好长时间。。。囧。。
#include<iostream>#include<cstdio>#include<cstring>using namespace std;#define N 200005#define LL(x) (x<<1)#define RR(x) (x<<1|1)struct node{ int L,R,val;}edge[N<<2];int buit(int L,int R,int i){ edge[i].L=L,edge[i].R=R; if(L==R){ scanf("%d",&edge[i].val); return edge[i].val; } int mid=(edge[i].L+edge[i].R)/2; return edge[i].val=max(buit(mid+1,R,RR(i)),buit(L,mid,LL(i)));}void updata(int id,int x,int i){ if(edge[i].L==edge[i].R){ edge[i].val=x;return; } int mid=(edge[i].L+edge[i].R)/2; if(id<=mid) updata(id,x,LL(i)); else updata(id,x,RR(i)); edge[i].val=max(edge[RR(i)].val,edge[LL(i)].val);}int query(int L,int R,int i){ if(L==edge[i].L && R==edge[i].R) return edge[i].val; int mid=(edge[i].L+edge[i].R)/2; if(R<=mid) return query(L,R,LL(i)); else if(L>mid) return query(L,R,RR(i)); else return max(query(mid+1,R,RR(i)),query(L,mid,LL(i)));}int main(){ int n,m,x,y; char s[5]; while(scanf("%d%d",&n,&m)!=-1){ buit(1,n,1); while(m--){ scanf("%s%d%d",s,&x,&y); if(s[0]=='Q') printf("%d\n",query(x,y,1)); else updata(x,y,1); } }}
- hdu 1754(种一棵线段树)
- hdu 1754 (线段树)
- 线段树(hdu 1754)
- hdu 1754(线段树)
- HDU 1754 (线段树)
- hdu 1754 线段树
- hdu 1754 线段树
- hdu 1754 线段树
- 【线段树】hdu 1754
- hdu 1754 线段树
- hdu 1754 线段树
- hdu 1754 线段树
- hdu 1754 线段树
- HDU 1754 线段树
- HDU -1754线段树
- HDU 1754 线段树
- hdu 1754 线段树
- hdu 1754 线段树
- asp.net类似QQ、人人的即时消息提醒
- C#泛型(Generic)各种数据类型求最大值
- 默认库“library”与其他库的使用冲突;请使用 /NODEFAULTLIB:library LNK4098 的解决办法
- 《当程序员的那些狗日日子》(五十)无限愧疚
- u-boot启动流程分析
- hdu 1754(种一棵线段树)
- xocde4.1 svn配置
- Flex模块管理器,ModuleManager
- 访问虚拟机内 ubutun 服务器
- Oracle Length 和 Lengthb 函数说明
- [欣赏]等待的季节
- 自定义你的Toast,想让它显示什么都行!!!
- 虚析构函数 enum
- linux面试题