线段树入门单节点更新区间求最大值hdu1754
来源:互联网 发布:云计算项目 编辑:程序博客网 时间:2024/05/22 06:33
#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<cstdio>#include<string>#include<set>#include<map>#include<queue>#include<vector>#include<stack>using namespace std;#define LL long long#define cl(a,b) memset(a,b,sizeof(a))#define N 50005#define MAXN 1001#define eps 10e-6#define lson i<<1,l,mid#define rson i<<1|1,mid+1,rint a[4000001];void push_up(int i){ a[i]=max(a[i<<1],a[(i<<1)|1]);}void build(int i,int l,int r){ if(l==r) { scanf("%d",&a[i]); return; } int mid=(l+r)>>1; build(lson); build(rson); push_up(i);}void update(int c,int b,int i,int l,int r){ if(l==r) { a[i]=b; return; } int mid=(l+r)>>1; if(c<=mid)update(c,b,lson); if(c>mid)update(c,b,rson); push_up(i);}int query(int i,int l,int r,int L,int R){ if(L<=l&&R>=r)return a[i]; int ans=0; int mid=(l+r)>>1; if(L<=mid)ans=max(ans,query(lson,L,R)); if(R>mid) ans=max(ans,query(rson,L,R)); return ans;}int main(){ int n,m,a,b; char c; while(~scanf("%d%d",&n,&m)) { build(1,1,n); for(int i=0;i<m;i++) { scanf("%*c%c%d %d",&c,&a,&b); if(c=='Q') printf("%d\n",query(1,1,n,a,b)); else if(c=='U') update(a,b,1,1,n); } } return 0;}
0 0
- 线段树入门单节点更新区间求最大值hdu1754
- hdu1754线段树(单节点更新+查询最大值)
- hdu1754-线段树(求区间最大值)
- hdu 1754 I Hate it(线段树的单节点更新,求区间最大值)
- HDU1754 线段树 + 裸 + 单点更新求区间最值
- hdu1754 初探线段树之区间最大值、
- hdu1754线段树维护区间最大值
- 线段树维护区间最大值hdu1754
- HDU1754线段树求取区间最大值
- HDU1754 I Hate It 线段树 区间更新 区间查找 最大值
- HDU1754 I Hate It(线段树单点更新,区间最大值,zkw线段树)
- HDOJ 1754 I Hate It 【线段树节点更新&&求区间最大值】
- hdu1754 I Hate It (线段树,求区间内的最大值)
- hdu1754——I Hate It(线段树,单点更新,求最大值)
- HDU1754—I Hate It线段树求最大值,单点更新
- 线段树求区间最大值RMQ(单点更新)
- 线段树(单点更新,区间求最大值)
- HDU 2795 Billboard (线段树 单点更新 区间求最大值)
- 2016-11-12
- 冒泡排序
- 音乐社交化和音乐模式的改变
- Unity3D在IOS、Android上使用C++并回调的究极解决方案
- 超经典的单例讲解
- 线段树入门单节点更新区间求最大值hdu1754
- 基于PT2262/PT2272的4路遥控电路
- Android百度定位
- Uva12100 Printer Queue 【queue+sort】【习题5-7】
- 同步与异步和阻塞与非阻塞
- SSM框架 之 Spring-IOC
- 理解JAVA的Semaphore信号量
- spring注解(二)
- HDU5584 证明题..