hdu 1754 I Hate It 线段树-区间最值
来源:互联网 发布:英语 加油 知乎 编辑:程序博客网 时间:2024/04/29 12:44
#include<bits/stdc++.h>using namespace std;typedef int ll;const int N=200000+5;int a[N],ans;struct Tree{ int left,right; ll maxv;}tree[4*N+10];//建立线段树,如果是数组a1-an,可以build(1,1,n)来建立void build(int id,int l,int r){ tree[id].left=l; tree[id].right=r; tree[id].maxv=0; if (l==r) { tree[id].maxv=a[l]; } else { int mid=(l+r)/2; build(id*2,l,mid); build(id*2+1,mid+1,r); tree[id].maxv=max(tree[id*2].maxv,tree[id].maxv); tree[id].maxv=max(tree[id*2+1].maxv,tree[id].maxv); }}//单点更新,id从1开始,pos为目标位置void update(int id,int pos,ll val){ if (tree[id].left==tree[id].right) tree[id].maxv=val; else { tree[id].maxv=(val,tree[id].maxv); int mid=(tree[id].left+tree[id].right)/2; if (pos<=mid) update(id*2,pos,val); else update(id*2+1,pos,val); tree[id].maxv=max(tree[id*2].maxv,tree[id].maxv); tree[id].maxv=max(tree[id*2+1].maxv,tree[id].maxv); }}//查询范围内的和void query(int id,int l,int r){ if (tree[id].left==l&&tree[id].right==r) { ans=max(tree[id].maxv,ans); return; } else { int mid=(tree[id].left+tree[id].right)/2; if (r<=mid) query(id*2,l,r); else if (l>mid) query(id*2+1,l,r); else { query(id*2,l,mid); query(id*2+1,mid+1,r); } }}int main(){ int i,n,m,x,y; char cmd[20]; while(~scanf("%d%d",&n,&m)) { memset(a,0,sizeof(a)); for(i=1;i<=n;i++) scanf("%d",&a[i]); build(1,1,n); for(i=0;i<m;i++) { scanf("%s %d %d",cmd,&x,&y); if(cmd[0]=='Q') { ans=-1; query(1,x,y); printf("%d\n",ans); } else { update(1,x,y); } } } return 0;}
0 0
- hdu 1754 I Hate It 线段树-区间最值
- HDU-1754I Hate It 线段树区间最值
- HDU OJ 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 I Hate It (线段树 单点替换, 区间最值)
- HDU 1754 I Hate It(线段树维护 区间最值)
- HDU 1754 I Hate It(线段树单点替换/区间最值)
- hdu 1754 I Hate It【线段树】 区间修改,最值查询
- SNMP在linux下的移植
- Codeforces Round #322 (Div. 2)
- Windows 7 注册串口工具mscomm32.ocx
- Android 性能优化之使用MAT分析内存泄露问题
- Android四大组件之Service小试牛刀
- hdu 1754 I Hate It 线段树-区间最值
- 传感器的使用:光线传感器
- 【设计模式】工厂模式
- Python: NLTK几个入门函数
- python简单图片转字符
- Swift中的闭包
- iOS9.0.1给我带来的问题
- easyui ——datagrid多表头
- 从拍照/相册里选择图片切图