HDU 1754 I Hate It(线段树:单点替换,区间最值)
来源:互联网 发布:期货行情软件下载 编辑:程序博客网 时间:2024/06/09 15:01
题意:中文题
思路:线段树基本应用,单点替换区间最值
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn = 200000+5;const int INF = 1e9;//线段树需要维护的信息int sum[maxn*4];#define lson i*2,l,m#define rson i*2+1,m+1,r//i结点收集子结点的统计结果 void PushUp(int i){sum[i]=max(sum[i*2],sum[2*i+1]);}//递归建立线段树void build(int i,int l,int r){if (l==r){scanf("%d",&sum[i]);return;}int m = (l+r)/2;build(lson);build(rson);PushUp(i); //收集子结点的结果}//在当前区间[l,r]内查询区间[ql,qr]间的目标值//且能执行这个函数的前提是:[l,r]与[ql,qr]的交集非空//本函数返回的结果也就是它们交集的目标值int query(int ql,int qr,int i,int l,int r){//目的区间包含当前区间if (ql <=l && qr>=r)return sum[i];int m = (l+r)/2;int ans = -INF;if (ql <= m)ans = max(ans,query(ql,qr,lson));if (m < qr)ans= max(ans,query(ql,qr,rson));return ans;}//如果本题是单点更新,可以在区间[l,r]内使得第id数的值+val//如果本题是区间更新,可以updata的参数需要将id改为ql,qrvoid update(int id,int val,int i,int l,int r){if (l==r){sum[i]=val;return;}int m = (l+r)/2;if (id <= m)update(id,val,lson);elseupdate(id,val,rson);PushUp(i); //时刻记得维护i结点统计信息的正确性}int main(){int cas = 1;int n,m;while (scanf("%d%d",&n,&m)!=EOF){ build(1,1,n);while (m--){char str[20];int u,v;scanf("%s%d%d",str,&u,&v);if (str[0]=='Q'){ printf("%d\n",query(u,v,1,1,n));}else if (str[0] == 'U'){ update(u,v,1,1,n);}}}}
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 【线段树--单点更新,区间最值】
- swift基本语法(总结提炼版)之004 Swift之 for 循环
- 使用git客户端提交代码到github
- java 学习笔记
- bootstrap-datepicker限定可选时间范围
- POJ--2386 Lake Counting
- HDU 1754 I Hate It(线段树:单点替换,区间最值)
- liunx下tomcat的安装以及详解
- PHP利用可变函数动态扩增类的属性
- 2015年自我总结与否定之再总结
- 2016寒假训练——01背包
- MD5工具类
- POJ--3009 Curling 2.0
- 线性表 之 链表反转
- 十大滤波算法程序大全