HDU 1754 线段树单点更新 区间最值
来源:互联网 发布:华为v8连上数据不能上 编辑:程序博客网 时间:2024/05/20 23:37
<pre name="code" class="cpp">#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const int MAXN = 200001;struct{ int l,r,m;}nod[MAXN * 4];///总线段长度为MAXN 数组一般开到总长度的4倍int a[MAXN];void build(int t,int l,int r){ nod[t].l = l; nod[t].r = r; if(l == r) { nod[t].m = a[l]; return ; } int mid = (l + r) / 2; build(t << 1,l,mid); build(t << 1|1,mid+1,r); nod[t].m = max(nod[t << 1].m,nod[t << 1|1].m);}void update(int t,int n,int v){ if(nod[t].l == nod[t].r && nod[t].l == n) { nod[t].m = v; return ; } int mid = (nod[t].l + nod[t].r) / 2; if(n <= mid) update(t << 1,n,v); else update(t << 1|1,n,v); nod[t].m = max(nod[t << 1].m,nod[t << 1|1].m);}int query(int t,int L,int R){ if(L == nod[t].l && R == nod[t].r) return nod[t].m; int s; if(R <= nod[t << 1].r) s = query(t << 1,L,R);///若所查找区间在左儿子 else if(L >= nod[t << 1|1].l) s = query(t << 1|1,L,R);///若所查找区间在右儿子 else s = max(query(t << 1,L,nod[t << 1].r),query(t << 1|1,nod[t << 1|1].l,R)); ///所查找区间横跨左右儿子区间 return s;}int main(){ int n,m,i,x1,x2; char s[2]; while(~scanf("%d%d",&n,&m)) { for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } build(1,1,n); while(m--) { scanf("%s%d%d",s,&x1,&x2); if(s[0]=='Q') printf("%d\n",query(1,x1,x2)); else update(1,x1,x2); } } return 0;}
0 0
- HDU 1754 线段树单点更新 区间最值
- hdu 1754 I Hate It(线段树单点更新及区间最值)
- hdu 1754 I Hate It (线段树功能:单点更新和区间最值)
- hdu 1754 I Hate It 线段树 单点更新 求区间最值
- hdu 1754 I Hate It(线段树,单点更新,区间最值)
- hdu 1754 I Hate It(线段树之 单点更新+区间最值)
- HDU 1754-I Hate It(线段树:单点更新,区间最值)
- HDU 1754 I hate it 【线段树--单点更新,区间最值】
- hdu 1754 I Hate It ----->线段树(区间最值,单点更新)
- HDU 1754 I Hate It(线段树单点更新区间最值查询)
- [HDU]1754 I Hate It (线段树--单点更新,区间最值)
- hdu 1754:I Hate It(线段树 单点更新+区间最值)
- HDU 1754 I Hate It【线段树,区间最值,单点更新,结构体】
- hdu 1754 线段树入门(单点替换,区间最值)
- hdu 2795 Billboard(线段树之 单点更新+区间最值)
- HDU 5316 Magician (线段树区间最值,单点更新)
- HDU 2795 Billboard(线段树区间最值查询和单点更新)
- hdu_1754,线段树单点更新,求区间最值
- Javascript:谈谈JS的全局变量跟局部变量
- 开 重 庆 发 票
- android中回调机制,小demo可以理解
- Reverse Linked List[LeetCode]
- 青 岛 代 开 发 票
- HDU 1754 线段树单点更新 区间最值
- 今天发现了个Android秘密
- CSV格式读写
- 青 岛 开 发 票
- hdu 1087 Super Jumping! Jumping! Jumping!(dp)
- 开 青 岛 发 票
- hdu 1042
- 【Android开发】线程与消息处理-通过实现Runnable接口来创建线程
- Windows server 2008 R2安装MySQL 32位ODBC驱动!