1. 就一勾子

在 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专题相关推荐

  1. kuangbin 专题一 简单搜索

    kuangbin 专题一 简单搜索 1.POJ1321棋盘问题[DFS] 代码 自己的想法 2.POJ2251Dungeon Master[三维空间BFS] 代码 自己的想法 3.POJ3278 Ca ...

  2. kuangbin专题十二 基础DP

    kuangbin专题十二 基础DP A - HDU1024 Max Sum Plus Plus B - HDU1029 Ignatius and the Princess IV C - HDU1069 ...

  3. [kuangbin]专题九 连通图 题解+总结

    kuangbin专题链接:https://vjudge.net/article/752 kuangbin专题十二 基础DP1 题解+总结:https://www.cnblogs.com/RioTian ...

  4. Kuangbin专题三Dancing Links

    Kuangbin专题三Dancing Links 没写完所有的,因为要去上课了赶紧先预习一下,这就先发出来吧. 跳舞链这东西以前在hihocoder上翻到过,当时看的模模糊糊的,现在好好学一学. 暂时 ...

  5. 老鱼的-kuangbin专题题解

    kuangbin专题问题一览 专题一 简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That Cow POJ 3279 Flipt ...

  6. 【kuangbin专题】计算几何_半平面交

    1.poj3335 Rotating Scoreboard 传送:http://poj.org/problem?id=3335 题意:就是有个球场,球场的形状是个凸多边形,然后观众是坐在多边形的边上的 ...

  7. kuangbin专题16B(kmp模板)

    题目链接: https://vjudge.net/contest/70325#problem/B 题意: 输出模式串在主串中出现的次数 思路: kmp模板 在 kmp 函数中匹配成功计数加一, 再令 ...

  8. kuangbin专题十六 KMP扩展KMP HDU3068 最长回文

    给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等 Input输入有多组case,不超过120组,每组输入为 ...

  9. [kuangbin]专题12 基础DP

    HDU 1024 Max Sum Plus Plus HDU 1029 Ignatius and the Princess IV HDU 1069 Monkey and Banana HDU 1074 ...

最新文章

  1. objloader使用方法
  2. Centos7 WARNING: ‘aclocal-1.15‘ is missing on your system.
  3. js判断字符是否为空的方法
  4. 信息学奥赛一本通(1131:基因相关性)
  5. 音视频开发(42)---H.264 SVC 简介
  6. 题目1022:游船出租(结构体使用)
  7. python特定数之和_python-在特定时间范围内来自pandas数据帧的值的总和
  8. 交流适配器行业调研报告 - 市场现状分析与发展前景预测
  9. 【HTTP请求】、详解
  10. 深度揭秘 如何将PDF转换成Word的技巧
  11. [转]需求分析的20条法则(本节摘自软件工程专家网)
  12. 非模块化jar的模块化转换
  13. 自己做的小游戏希望大家能喜欢
  14. CUPS学习一:CUPS设计介绍。
  15. 解决Node.js中下包速度慢的问题
  16. CSS中:margin和padding的区别 margin:auto与margin: 0 auto区别
  17. β阶段第一周版本控制报告
  18. shp文件中polyline是什么_shp文件的读取
  19. 日淘转运公司的横向对比 及如何选择转运渠道和增值服务
  20. javax crypto IllegalBlockSizeException last block incomplet

热门文章

  1. 每任务-苹果应用市场隐私政策
  2. 从新手运气到幸存者偏差
  3. Using R Language to Plot Diagrams
  4. 化学系女生的工程师之路
  5. 《算法导论》第六章之堆和优先级队列相关算法C语言实现
  6. uva 1362 区间DP
  7. 舒亦梵:现货黄金入门小知识,你知道多少
  8. ERROR: backports-5.4-r0 do_compile: oe_runmake failed 解决办法
  9. 计算机光驱图标符号,电脑不显示光驱图标怎么解决
  10. string类型--字符串常用取值操作