HDU-1698-Just a Hook
来源:互联网 发布:卢武铉在韩国名声知乎 编辑:程序博客网 时间:2024/05/21 00:45
ACM模版
描述
题解
典型的线段树问题,区间更新,区间求和,涉及到延时标记。
代码
#include <iostream>using namespace std;const int MAXN = 1e5;struct node{ int left; int right; int data; int sum;};node hook[4 * MAXN];void build(int root, int left, int right){ hook[root].left = left; hook[root].right = right; if (left == right) { hook[root].data = 1; hook[root].sum = 1; } else { int mid = (left + right) >> 1; build(root * 2, left, mid); build(root * 2 + 1, mid + 1, right); hook[root].data = 0; hook[root].sum = (hook[root * 2].sum + hook[root * 2 + 1].sum); }}void updata(int root, int left, int right, int data){ if (hook[root].left == left && hook[root].right == right) { if (hook[root].data != data) { hook[root].data = data; hook[root].sum = (right - left + 1) * data; } } else { if (hook[root].data > 0) { hook[root * 2].data = hook[root].data; // 更新延时标记 hook[root * 2].sum = (hook[root * 2].right - hook[root * 2].left + 1) * hook[root * 2].data; hook[root * 2 + 1].data = hook[root].data; // 更新延时标记 hook[root * 2 + 1].sum = (hook[root * 2 + 1].right - hook[root * 2 + 1].left + 1) * hook[root * 2 + 1].data; } hook[root].data = 0; // 延时标记重置为0 int mid = (hook[root].left + hook[root].right) >> 1; if (right <= mid) { updata(root * 2, left, right, data); } else if (left > mid) { updata(root * 2 + 1, left, right, data); } else { updata(root * 2, left, mid, data); updata(root * 2 + 1, mid + 1, right, data); } hook[root].sum = hook[root * 2].sum + hook[root * 2 + 1].sum; }}int main(){ int T; scanf("%d",&T); int N, Q; int X, Y, Z; for (int i = 1; i <= T; i++) { scanf("%d", &N); build(1, 1, N); scanf("%d", &Q); while (Q--) { scanf("%d%d%d", &X, &Y, &Z); updata(1, X, Y, Z); } printf("Case %d: The total value of the hook is %d.\n", i, hook[1].sum); } 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
- 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
- angular2 router中的路由跳转navigate
- C++中重载函数模板
- 计算机丢失LIBEAY32.dll的解决方法
- [BZOJ2822][AHOI2012]树屋阶梯(卡特兰数+组合数学+高精度)
- 17-01-18
- HDU-1698-Just a Hook
- Android|Java 开发中的那些坑 ConcurrentModificationException
- Android Espresso UI测试
- 计算机中那些事儿(九):资料管理一些建议---理论篇
- Java考试题之十
- C++标准库函数swap的用法
- vue-cli的webpack模版,相关配置文件dev-server.js与webpack.config.js配置解析
- hive的功能架构
- 欢迎使用CSDN-markdown编辑器