HDU1754 I HATE IT【线段树】
来源:互联网 发布:未来人工智能龙头股 编辑:程序博客网 时间:2024/06/06 20:10
题面:
Problem Description
很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。
这让很多学生很反感。
不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。
Input
本题目包含多组测试,请处理到文件结束。
在每个测试的第一行,有两个正整数 N 和 M ( 0
大致思路:
依然是一个裸的线段树,点修改+区间询问,不过要求和上一题不一样。这个题求的是区间最大值。
把树中存的数改成区间最大值就OK了。
代码:
#include<bits/stdc++.h>using namespace std;const int maxn=2e5+10;int a[maxn],tree[maxn*4];void build(int l,int r,int k){ if(l>r) return ; if(l==r){ tree[k]=a[l]; return ; } int mid=(l+r)>>1; build(l,mid,k*2); build(mid+1,r,k*2+1); tree[k]=max(tree[k*2],tree[k*2+1]);}void change(int pos,int x,int k,int l,int r){ if(l==r&&l==pos){ tree[k]=x; return ; } int mid=(l+r)>>1; if(pos<=mid) change(pos,x,k*2,l,mid); else change(pos,x,k*2+1,mid+1,r); tree[k]=max(tree[k*2],tree[k*2+1]);}int query(int l,int r,int ql,int qr,int k){ if(ql>r||qr<l) return -1; if(l>=ql&&r<=qr) return tree[k]; int mid=(l+r)>>1; int s1=query(l,mid,ql,qr,2*k); int s2=query(mid+1,r,ql,qr,2*k+1); return max(s1,s2);}int main(){ //freopen("in.txt","r",stdin); ios::sync_with_stdio(false);//不关闭同步有可能超时,也可以直接用scanf int n,m,x,y; char cmd; while(cin>>n>>m) { for(int i=1;i<=n;++i) cin>>a[i]; build(1,n,1); while(m--) { cin>>cmd>>x>>y; if(cmd=='Q') cout<<query(1,n,x,y,1)<<endl; else change(x,y,1,1,n); } } return 0;}
阅读全文
1 0
- HDU1754 I Hate It,线段树
- 线段树hdu1754 I Hate It
- 【线段树】 hdu1754 I Hate It
- hdu1754 I Hate It (线段树)
- hdu1754 I Hate It+线段树
- hdu1754 I Hate It (线段树)
- hdu1754 I Hate It (线段树)
- HDU1754 I Hate It(线段树)
- hdu1754 I Hate It(线段树)
- hdu1754 I Hate It,线段树
- hdu1754 I Hate It(线段树)
- hdu1754 I Hate It(线段树)
- 线段树(hdu1754 I hate it)
- hdu1754-I Hate It(线段树)
- hdu1754 I hate it (线段树)
- 【HDU1754】I HATE IT,线段树练习
- hdu1754 I Hate It 线段树RMQ
- HDU1754:I Hate It(线段树)
- SQL Server 三种Join方式
- NLTK中常见定义的函数
- 在Visual Studio 2015中使用TortoiseGit
- Google Cloud 磁盘满解决办法
- 支付系统对账算法优化方案
- HDU1754 I HATE IT【线段树】
- 大数据行业必须掌握的25个大数据术语
- CentOS 6.5 64位 php从5.3升级5.6
- Percolator 中的分布式事务
- stm32+ESP8266AT指令详细说明
- 使用obfuscator llvm 和andorid NDK进行代码混淆
- 面向对象编程基础——学python类和实例化
- 恢复误删的innodb共享表空间文件
- kali安装之后常用命令--关闭锁屏、服务自启动