hdu 1754 I hate it
来源:互联网 发布:jquery封装json 编辑:程序博客网 时间:2024/05/17 09:18
主题思想: 这道题是RMQ问题,通常RMQ可以用线段树和树状数组来做。由于树状数组记录的是区间和问题,这道题求的是最值问题,所以这道题不能用树状数组,是最简单的单点更新,区间查询问题。
线段树版本, 首先RMQ ,Q (query) 的是什么呢? 一个区间的最大值问题,所以线段树节点存放最大值,因为只记录着一个值,用int数组就可以了。
线段树核心操作 ,建树,更新,查询,
const int maxn=200000;int a[maxn*3];void pushup(int i){ a[i]=max(a[i<<1],a[i<<1|1]);}void build(int l,int r,int i){ if(l==r){ scanf("%d",&a[i]); return ; } int mid=l+(r-l)/2; build(l,mid,i<<1); build(mid+1,r,i<<1|1); pushup(i);}int query(int ql,int qr,int l,int r,int i){ if(ql<=l&&r<=qr){ return a[i]; } int ans=0; int mid=l+(r-l)/2; if(qr<=mid) ans=query(ql,qr,l,mid,i<<1); else if(ql>mid) ans=query(ql,qr,mid+1,r,i<<1|1); else{ ans=max(query(ql,qr,l,mid,i<<1),query(ql,qr,mid+1,r,i<<1|1)); } return ans;}
AC代码:
#include <iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>using namespace std;const int maxn=200000;int a[maxn*3];void pushup(int i){ a[i]=max(a[i<<1],a[i<<1|1]);}void build(int l,int r,int i){ if(l==r){ scanf("%d",&a[i]); return ; } int mid=l+(r-l)/2; build(l,mid,i<<1); build(mid+1,r,i<<1|1); pushup(i);}int query(int ql,int qr,int l,int r,int i){ if(ql<=l&&r<=qr){ return a[i]; } int ans=0; int mid=l+(r-l)/2; if(qr<=mid) ans=query(ql,qr,l,mid,i<<1); else if(ql>mid) ans=query(ql,qr,mid+1,r,i<<1|1); else{ ans=max(query(ql,qr,l,mid,i<<1),query(ql,qr,mid+1,r,i<<1|1)); } return ans;}void update(int p,int num,int l,int r,int i){ if(l==r){ a[i]=num; return ; } int mid=l+(r-l)/2; if(p<=mid) update(p,num,l,mid,i<<1); else update(p,num,mid+1,r,i<<1|1); pushup(i);}int main(){ int n,m; int A,B; string op; while(scanf("%d%d",&n,&m)!=EOF){ build(1,n,1); for(int i=0;i<m;i++){ cin>>op; scanf("%d%d",&A,&B); if(op=="Q"){ printf("%d\n",query(A,B,1,n,1)); }else if(op=="U"){ update(A,B,1,n,1); } } } return 0;}
阅读全文
0 0
- 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
- hdu 1754 I Hate It
- hdu 1754 I hate it
- HDU 1754 I Hate It
- UVa11582
- 你应该知道的云计算行业最专业的教材
- Knight Moves
- 有借必有贷,借贷必相等
- 使用Xcode进行iOS设备无线调试
- hdu 1754 I hate it
- MarkDown 流程图 Flow 语法
- dbcp2参数说明
- pinpoint 部署 包含(tomcat,jboss,spring boot 探针支持)
- git 版本回退
- HybridDB · 最佳实践 · 阿里云数据库PetaData
- robotframework关键字
- 小程序逻辑层
- Mongodb亿级数据量的性能测试