1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. #include<algorithm>
  5. using namespace std;
  6. typedef long long ll;
  7. const int N=1e5+;
  8. struct node{
  9. int l,r;
  10. int sum;
  11. int add;
  12. }tr[N*];
  13. void pushdown(int root)
  14. {
  15. if (tr[root].add)
  16. {
  17. tr[root<<].add=tr[root].add;
  18. tr[root<<|].add=tr[root].add;
  19. int mid=(tr[root].l+tr[root].r)/;
  20. tr[root<<].sum=tr[root].add*(mid-tr[root].l+);
  21. tr[root<<|].sum=tr[root].add*(tr[root].r-mid);
  22. tr[root].add=;
  23. }
  24. }
  25. void pushup(int u)
  26. {
  27. tr[u].sum=tr[u<<].sum+tr[u<<|].sum;
  28. }
  29. void build(int root, int l, int r)
  30. {
  31. tr[root].l=l;
  32. tr[root].r=r;
  33. tr[root].add=;
  34. tr[root].sum=;
  35. if(l==r)
  36. {
  37. tr[root].sum = ;
  38. return ;
  39. }
  40. int mid=l+r>>;
  41. build(root<<,l,mid);
  42. build(root<<|,mid+,r);
  43. pushup(root);
  44. }
  45. void update(int root,int ql,int qr,int c)
  46. {
  47. if (ql>tr[root].r||qr<tr[root].l)
  48. return;
  49. if (ql<=tr[root].l&&tr[root].r<= qr)
  50. {
  51. tr[root].sum=(tr[root].r-tr[root].l+)*c;
  52. tr[root].add=c;
  53. }
  54. else
  55. {
  56. pushdown(root);
  57. int mid=tr[root].l+tr[root].r>>;
  58. update(root<<,ql,qr,c);
  59. update(root<<|,ql,qr,c);
  60. pushup(root);
  61. }
  62. }
  63. int main()
  64. {
  65. int t,cnt=;
  66. scanf("%d",&t);
  67. while(t--)
  68. {
  69. int n,q;
  70. scanf("%d%d",&n,&q);
  71. build(,,n);
  72. while(q--)
  73. {
  74. int l,r,op;
  75. scanf("%d%d%d",&l,&r,&op);
  76. update(,l,r,op);
  77. }
  78. printf("Case %d: The total value of the hook is %d.\n", ++cnt, tr[].sum);
  79. }
  80. }

Just a Hook HDU - 1698Just a Hook HDU - 1698 线段树区间替换的更多相关文章

  1. HDU.1689 Just a Hook (线段树 区间替换 区间总和)

    HDU.1689 Just a Hook (线段树 区间替换 区间总和) 题意分析 一开始叶子节点均为1,操作为将[L,R]区间全部替换成C,求总区间[1,N]和 线段树维护区间和 . 建树的时候初始 ...

  2. HDU 1698 Just a Hook(线段树 区间替换)

    Just a Hook [题目链接]Just a Hook [题目类型]线段树 区间替换 &题解: 线段树 区间替换 和区间求和 模板题 只不过不需要查询 题里只问了全部区间的和,所以seg[ ...

  3. E - Just a Hook HDU - 1698 线段树区间修改区间和模版题

    题意  给出一段初始化全为1的区间  后面可以一段一段更改成 1 或 2 或3 问最后整段区间的和是多少 思路:标准线段树区间和模版题 #include<cstdio> #include& ...

  4. HDU 1698 线段树 区间更新求和

    一开始这条链子全都是1 #include<stdio.h> #include<string.h> #include<algorithm> #include<m ...

  5. hdu 3911 Black And White (线段树 区间合并)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3911 题意: 给你一段01序列,有两个操作: 1.区间异或,2.询问区间最长的连续的1得长度 思路: ...

  6. hdu 1698 线段树 区间更新 区间求和

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  7. HDU 1698 Just a Hook(线段树区间替换)

    题目地址:pid=1698">HDU 1698 区间替换裸题.相同利用lazy延迟标记数组,这里仅仅是当lazy下放的时候把以下的lazy也所有改成lazy就好了. 代码例如以下: # ...

  8. HDU 1698 Just a Hook(线段树区间替换)

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  9. [HDU] 1698 Just a Hook [线段树区间替换]

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

随机推荐

  1. 实验21:IPv6

    九.IPv6 1.IPv6(RIP) 实验目的:熟悉IPv6的配置,并经过动态路由协议RIP,使三台路由器相互通讯设备需求:3640三台实验过程: xdbr_R1#sh runipv6 unicast ...

  2. mysql笔记(暂时)

    2018-05-28 create table cms_user(id int key auto_increment,username varchar(20),password varchar(20) ...

  3. hdu 1159求最长公共子序列

    题目描述:给出两个字符串,求两个字符串的公共子序列(不是公共子串,不要求连续,但要符合在原字符串中的顺序) in: abcfbc abfcab programming contest abcd mnp ...

  4. meta 的作用 搜集

    Meta标签中的format-detection属性及含义   format-detection翻译成中文的意思是“格式检测”,顾名思义,它是用来检测html里的一些格式的,那关于meta的forma ...

  5. 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  6. JDK14都要问世了,你还在用JDK8吗

    Java开发工具包(JDK)14已进入发布候选阶段,总体功能基本已确定.计划中的标准Java升级将具有新功能,例如JDK Flight Recorder事件流,模式匹配和开关表达式. JDK 14计划 ...

  7. 04-Spring01-IOC

    今日知识 1. Spring IOC控制反转(Inverse of control) 2. Spring DI依赖注入(Dependency Injection ) Spring 1. 概念:简单来说 ...

  8. SqlServer触发器的基础知识

    触发器的基础知识:create trigger tr_name on table/view{for | after | instead of } [update][,][insert][,][dele ...

  9. 【转载】Java的Vector,ArrayList,LinkedList

    首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复.3个具体 ...

  10. [算法] Dijkstra算法(带权有向图 最短路径算法)

    一.带权有向图 二.算法原理 1)由于我们的节点是从1-6,所以我们创建的列表或数组都是n+1的长度,index=0的部分不使用,循环范围为1-6(方便计算). 2)循环之前,我们先初始化dis数组和 ...