4342. 就一勾子 HDU1698 , kuangbin专题
- 就一勾子
在 DotA 这个游戏中,帕吉(屠夫、胖子)的钩子让很多英雄闻风丧胆。
帕吉的钩子是由 n 个连续的等长金属棒拼接而成。
这些金属棒不妨编号为 1∼n。
最开始时,所有金属棒都是铜棒。
现在,帕吉要对他的钩子进行 Q 次更改操作,操作分为以下三种:
l r 1,表示将第 l∼r 个金属棒换成铜棒。
l r 2,表示将第 l∼r 个金属棒换成银棒。
l r 3,表示将第 l∼r 个金属棒换成金棒。
每根铜棒的价值为 1,每根银棒的价值为 2,每根金棒的价值为 3。
钩子的总价值等于 n 个金属棒的价值之和。
请你计算所有操作完成以后,钩子的总价值。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据第一行包含整数 n。
第二行包含一个整数 Q。
接下来 Q 行,每行描述一个操作,格式如题面描述。
输出格式
每组数据输出一行答案,格式为 Case i: The total value of the hook is x.,其中 i 为组别编号(从 1 开始),x 为钩子的总价值。
数据范围
1≤T≤10,
1≤n≤105,
0≤Q≤105,
1≤l≤r≤n。
输入样例:
1
10
2
1 5 2
5 9 3
输出样例:
Case 1: The total value of the hook is 24.
#include<cstdio>
#include<cstring>
#pragma GCC optmize(3)
using namespace std;
const int N = 1e5+10;
struct xds{int l,r;int sum;int lazy;
}tr[N*4];
int T,n,q;
inline void pushup(int u){tr[u].sum=tr[u<<1].sum+tr[u<<1|1].sum;
}
inline void pushdown(int u){tr[u<<1].sum=(tr[u<<1].r-tr[u<<1].l+1)*tr[u].lazy;tr[u<<1|1].sum=(tr[u<<1|1].r-tr[u<<1|1].l+1)*tr[u].lazy;tr[u<<1].lazy=tr[u].lazy;tr[u<<1|1].lazy=tr[u].lazy;tr[u].lazy=0;
}
inline void build(int u,int l,int r){if(l==r){tr[u]={l,r,1,0};}else {tr[u]={l,r};int mid=l+r>>1;build(u<<1,l,mid),build(u<<1|1,mid+1,r);pushup(u);}
}
inline void modify(int u,int l,int r,int x){if(tr[u].l>=l&&tr[u].r<=r){tr[u].sum=(tr[u].r-tr[u].l+1)*x;tr[u].lazy=x;return ;}if(tr[u].lazy) pushdown(u);int mid=tr[u].l+tr[u].r>>1;if(l<=mid)modify(u<<1,l,r,x);if(r>mid)modify(u<<1|1,l,r,x);pushup(u);
}
inline int query(int u,int l,int r){if(tr[u].l>=l&&tr[u].r<=r)return tr[u].sum;if(tr[u].lazy) pushdown(u);int sum(0),mid=tr[u].l+tr[u].r>>1;if(l<=mid)sum+=query(u<<1,l,r);if(r>mid)sum+=query(u<<1|1,l,r);pushup(u);return sum;
}
int main(){scanf("%d",&T);for(register int i(1);i<=T;i++){scanf("%d%d",&n,&q);build(1,1,n);while(q--){int l,r,x;scanf("%d%d%d",&l,&r,&x);modify(1,l,r,x);}printf("Case %d: The total value of the hook is %d.\n",i,query(1,1,n));}
}
4342. 就一勾子 HDU1698 , kuangbin专题相关推荐
- kuangbin 专题一 简单搜索
kuangbin 专题一 简单搜索 1.POJ1321棋盘问题[DFS] 代码 自己的想法 2.POJ2251Dungeon Master[三维空间BFS] 代码 自己的想法 3.POJ3278 Ca ...
- kuangbin专题十二 基础DP
kuangbin专题十二 基础DP A - HDU1024 Max Sum Plus Plus B - HDU1029 Ignatius and the Princess IV C - HDU1069 ...
- [kuangbin]专题九 连通图 题解+总结
kuangbin专题链接:https://vjudge.net/article/752 kuangbin专题十二 基础DP1 题解+总结:https://www.cnblogs.com/RioTian ...
- Kuangbin专题三Dancing Links
Kuangbin专题三Dancing Links 没写完所有的,因为要去上课了赶紧先预习一下,这就先发出来吧. 跳舞链这东西以前在hihocoder上翻到过,当时看的模模糊糊的,现在好好学一学. 暂时 ...
- 老鱼的-kuangbin专题题解
kuangbin专题问题一览 专题一 简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That Cow POJ 3279 Flipt ...
- 【kuangbin专题】计算几何_半平面交
1.poj3335 Rotating Scoreboard 传送:http://poj.org/problem?id=3335 题意:就是有个球场,球场的形状是个凸多边形,然后观众是坐在多边形的边上的 ...
- kuangbin专题16B(kmp模板)
题目链接: https://vjudge.net/contest/70325#problem/B 题意: 输出模式串在主串中出现的次数 思路: kmp模板 在 kmp 函数中匹配成功计数加一, 再令 ...
- kuangbin专题十六 KMP扩展KMP HDU3068 最长回文
给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等 Input输入有多组case,不超过120组,每组输入为 ...
- [kuangbin]专题12 基础DP
HDU 1024 Max Sum Plus Plus HDU 1029 Ignatius and the Princess IV HDU 1069 Monkey and Banana HDU 1074 ...
最新文章
- objloader使用方法
- Centos7 WARNING: ‘aclocal-1.15‘ is missing on your system.
- js判断字符是否为空的方法
- 信息学奥赛一本通(1131:基因相关性)
- 音视频开发(42)---H.264 SVC 简介
- 题目1022:游船出租(结构体使用)
- python特定数之和_python-在特定时间范围内来自pandas数据帧的值的总和
- 交流适配器行业调研报告 - 市场现状分析与发展前景预测
- 【HTTP请求】、详解
- 深度揭秘 如何将PDF转换成Word的技巧
- [转]需求分析的20条法则(本节摘自软件工程专家网)
- 非模块化jar的模块化转换
- 自己做的小游戏希望大家能喜欢
- CUPS学习一:CUPS设计介绍。
- 解决Node.js中下包速度慢的问题
- CSS中:margin和padding的区别 margin:auto与margin: 0 auto区别
- β阶段第一周版本控制报告
- shp文件中polyline是什么_shp文件的读取
- 日淘转运公司的横向对比 及如何选择转运渠道和增值服务
- javax crypto IllegalBlockSizeException last block incomplet