hdu 1698 屠夫(线段树成段替换)
来源:互联网 发布:vipabc软件 编辑:程序博客网 时间:2024/05/16 08:41
题意:
屠夫有钱了,要把他的钩子换成银的或者金的。
解析:
线段树成段替换。
代码:
#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>#include <climits>#include <cassert>#define LL long long#define lson lo, mi, rt << 1#define rson mi + 1, hi, rt << 1 | 1using namespace std;const int maxn = 100000 + 10;const int inf = 0x3f3f3f3f;const double eps = 1e-8;const double pi = acos(-1.0);const double ee = exp(1.0);int sum[maxn << 2];int lazy[maxn << 2];void pushup(int rt){ sum[rt] = sum[rt << 1] + sum[rt << 1 | 1];}void pushdown(int rt, int mi){ if (lazy[rt]) { lazy[rt << 1] = lazy[rt << 1 | 1] = lazy[rt]; sum[rt << 1] = (mi - (mi >> 1)) * lazy[rt]; sum[rt << 1 | 1] = (mi >> 1) * lazy[rt]; lazy[rt] = 0; }}void build(int lo, int hi, int rt){ lazy[rt] = 0; sum[rt] = 1; if (lo == hi) return; int mi = (lo + hi) >> 1; build(lson); build(rson); pushup(rt);}void update(int L, int R, int num, int lo, int hi, int rt){ if (L <= lo && hi <= R) { lazy[rt] = num; sum[rt] = num * (hi - lo + 1); return; } pushdown(rt, hi - lo + 1); int mi = (lo + hi) >> 1; if (L <= mi) update(L, R, num, lson); if (mi < R) update(L, R, num, rson); pushup(rt);}int main(){ #ifdef LOCAL freopen("in.txt", "r", stdin); #endif // LOCAL int ncase; scanf("%d", &ncase); int ca = 1; while (ncase--) { int n, m; scanf("%d", &n); build(1, n, 1); scanf("%d", &m); while (m--) { int fr, to, num; scanf("%d%d%d", &fr, &to, &num); update(fr, to, num, 1, n, 1); } printf("Case %d: The total value of the hook is %d.\n", ca++, sum[1]); } return 0;}
0 0
- hdu 1698 屠夫(线段树成段替换)
- HDU.1698 屠夫(线段树成段更新大大大水题)
- HDU 1698 Just a Hook(线段树区间替换)
- HDU--1698(线段树,区间修改成段替换)
- 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 线段树成段更新
- hdu 1698 线段树成段更新
- HDU 1698线段树成段更新
- HDU 1698 线段树成段更新
- hdu 1698 (线段树)
- HDU 1698 JUST a hook (线段树 成段替换 区间求和 延迟标记)
- 线段树HDU——1754(单点替换,区间最值)
- HDU 1754 I Hate It(线段树单点替换/区间最值)
- HDU 1754 I Hate It (线段树 -- 单点替换,区间最值)
- Winform之学生信息管理系统登陆窗体
- codeforce(找规律的简单题)
- 2015.4.0.57_断点_8.30_详解Eclipse断点_0.01
- 相机视野控制效果
- Openfire更改服务器名称的方法
- hdu 1698 屠夫(线段树成段替换)
- iOS UI 基础
- 面向对象(举例)
- ubuntu14.04安装配置VTK-6.2.0
- 4-2 RFID系统二进制树型搜索算法是如何解决碰撞的?简述其实现步骤
- (17)sql注入与sql mode
- LeetCode 27 Remove Element
- 【RFID第五次作业】第八章课后习题
- LeetCode 010-Regular Expression Matching