线段树专题#3_蒟蒻训练历程记录_HDU1754_I hate It
来源:互联网 发布:mysql 修改约束条件 编辑:程序博客网 时间:2024/06/07 08:13
裸线段树,唯一的坑点是更新的时候必须向上一起更新,如果写成两个更新函数那么就会超时。。还是代码写丑了。。
#pragma comment(linker, "/STACK:1024000000,1024000000")#include<iostream>#include<cstdlib>#include<cstdio>#include<cmath>#include<cstring>#include<vector>#include<map>#include<algorithm>#include<queue>#include<stack>//线段树单点更新查询 using namespace std;typedef long long ll;#define N 200010int g[4*N];int a[N];void init(int rt, int l, int r){ if(l == r){g[rt] = a[l];return;}int mid = (l+r)>>1;init(rt<<1, l, mid);init(rt<<1|1, mid+1, r);}int PushUp(int rt, int l, int r){if(l == r){return g[rt];}int mid = (l+r)>>1;int k1 = PushUp(rt<<1, l, mid);int k2 = PushUp(rt<<1|1, mid+1, r);return g[rt] = max(k1, k2);}int find(int rt, int l, int r, int L, int R){if(l >= L && r <= R){return g[rt];}int mid = (l+r)>>1;int k1 = 0, k2 = 0;if(mid >= L){k1 = find(rt<<1, l, mid, L, R);}if(mid < R){k2 = find(rt<<1|1, mid+1, r, L, R);}return max(k1, k2);}int Update(int rt, int l, int r, int x, int k){if(l == r && x == l){g[rt] = k;return k;}int mid = (l+r)>>1, ans;if(x <= mid){ans = max(k, g[rt]);Update(rt<<1, l, mid, x, k);}else{ans = max(k, g[rt]);Update(rt<<1|1, mid+1, r, x, k);}return g[rt] = ans;}int main(){int n, m;while(~scanf("%d%d", &n, &m)){memset(g, 0, sizeof(g)); for(int i = 1; i <= n; i++) scanf("%d", & a[i]);init(1, 1, n);PushUp(1, 1, n);//getchar();while(m--) { int l, r; char q; cin >> q >> l >> r; if(q == 'Q') { int ans = find(1, 1, n, l, r); printf("%d\n", ans); } else if(q == 'U') { Update(1, 1, n, l, r);//Updata里面要有自动更新的功能否则会超时 //PushUp(1, 1, n); } } }return 0;}
0 0
- 线段树专题#3_蒟蒻训练历程记录_HDU1754_I hate It
- 线段树专题#1_蒟蒻训练历程记录_HDU1166
- 线段树专题#2_蒟蒻训练历程记录_HDU5775
- 线段树专题#4_蒟蒻训练历程记录_HDU1698_ 延迟标记、区间更新
- 线段树专题#6_蒟蒻训练历程记录_HDU 2705 Billboard_单点更新
- 线段树专题#5_蒟蒻训练历程记录_HDU 1394 Minimum Inversion Number_单点更新+思维转换
- 训练之线段树I Hate It
- kuangbin——线段树专题 B - I Hate It
- 【hdu 1754】I Hate It 【线段树 训练1】
- hdu1754_I Hate It(线段树)
- I Hate It (线段树)
- 线段树:I Hate It
- 线段树-HDU1754I Hate It
- i hate it 线段树
- hdu1754I Hate It(线段树)
- I Hate It 【线段树】
- I Hate It---线段树
- I hate it --线段树
- LogUtils
- Java泛型编程最全总结
- oc 调用charts
- 浅谈 iOS 版本号
- 通过UIImageView的tag为点击事件UITapGestureRecognizer传参
- 线段树专题#3_蒟蒻训练历程记录_HDU1754_I hate It
- redis 分布式 session容器
- 赛码网_在线编程_约会
- 自测-1 打印沙漏 (20分)
- Maven-filter和resource
- Springmvc+mybatis的系统架构
- Android Studio 更改背景和设置字体大小
- ajax调用时,document.getElementById获取不到值
- CRC16 三种算法及c实现