HDU 1698 Just a Hook(线段树成段更新)
来源:互联网 发布:linux 查看命令的路径 编辑:程序博客网 时间:2024/06/06 01:54
#include "string"#include "iostream"#include "cstdio"#include "cmath"#include "algorithm"#define INF 0x3f3f3f3f#define INFL 0x3f3f3f3f3f3f3f3fLLusing namespace std;typedef long long LL;const int M=55;#define lson l , m , rt << 1 #define rson m + 1 , r , rt << 1 | 1 const int maxn = 111111; int h , w , n; int col[maxn<<2]; int sum[maxn<<2]; void PushUp(int rt) { sum[rt] = sum[rt<<1] + sum[rt<<1|1]; } //懒人标记 void PushDown(int rt,int m) { if (col[rt]) { col[rt<<1] = col[rt<<1|1] = col[rt]; sum[rt<<1] = (m - (m >> 1)) * col[rt]; sum[rt<<1|1] = (m >> 1) * col[rt]; col[rt] = 0; } } void build(int l,int r,int rt) { col[rt] = 0; sum[rt] = 1; if (l == r) return ; int m = (l + r) >> 1; build(lson); build(rson); PushUp(rt); } void update(int L,int R,int c,int l,int r,int rt) { if (L <= l && r <= R) { col[rt] = c; sum[rt] = c * (r - l + 1); return ; } PushDown(rt , r - l + 1); int m = (l + r) >> 1; if (L <= m) update(L , R , c , lson); if (R > m) update(L , R , c , rson); PushUp(rt); } int main() { int T , n , m; scanf("%d",&T); for (int cas = 1 ; cas <= T ; cas ++) { scanf("%d%d",&n,&m); build(1 , n , 1); while (m --) { int a , b , c; scanf("%d%d%d",&a,&b,&c); update(a , b , c , 1 , n , 1); } printf("Case %d: The total value of the hook is %d.\n",cas , sum[1]); } return 0; }
线段树成段更新的应用,需要用到惰性标记,,多开一个数组,以及区分于单点更新不同。。还是挺好理解的。
0 0
- HDU 1698 Just a Hook(线段树成段更新求和)
- HDU 1698 Just a Hook(线段树成段更新)
- HDU 1698 Just a Hook(线段树成段更新)
- HDU 1698 Just a Hook(线段树成段更新)
- HDU 1698 线段树成段更新 Just a Hook
- hdu 1698 Just a Hook 线段树成段更新
- HDU 1698 Just a Hook / 线段树成段更新
- HDU-1698 Just a Hook 线段树成段更新
- HDU 1698 Just a Hook,线段树成段更新
- hdu 1698 Just a Hook 线段树成段更新
- 线段树成段更新 hdu 1698 Just a Hook
- hdu 1698 Just a Hook(线段树成段更新lazy)
- HDU 1698 Just a Hook 线段树成段更新
- HDU-1698Just a Hook-线段树成段更新
- 线段树(区间更新) hdu-1698-Just a Hook
- hdu 1698 Just a Hook(线段树-区间更新)
- HDU 1698 Just a Hook (线段树区间更新)
- HDU 1698 Just a Hook (线段树区间更新)
- 实时分析网站UV与Flajolet-Martin算法
- android模拟器使用sd卡
- 栈和队列之间的互相实现
- android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事项
- 重生之晚来月
- HDU 1698 Just a Hook(线段树成段更新)
- 椭圆的周长与面积_来自一张老外的作业纸
- hdu 3038 How Many Answers Are Wrong(带权并查集+树的性质)
- GitHub 优秀的 Android 开源项目
- P51 第二章 第十四题
- lucene基础
- 禁用cookie后session是如何设置的
- 队列-数组实现
- Ubuntu14.10安装wireshark并抓包