题意:

hook有一根长度为n的棒,可以将它看成有n段,一开始每段都是铜,hook可以选择一段区间改变棒的属性,

棒有三种属性:铜=1,银=2,金=3,最后输出棒每段的属性总和。

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698

思路:

区间染色+区间查询

代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int MAXN=1e5+;
  4. typedef long long ll;
  5. int lazy[MAXN<<],tree[MAXN<<];
  6. void push_up(int node)
  7. {
  8. tree[node]=tree[node<<]+tree[node<<|];
  9. }
  10. void build(int node,int l,int r)
  11. {
  12. if(l==r)
  13. {
  14. tree[node]=;return ;
  15. }
  16. int mid=(l+r)>>;
  17. build(node<<,l,mid);
  18. build(node<<|,mid+,r);
  19. push_up(node);
  20. }
  21. void push_down(int node,int l,int r,int mid)
  22. {
  23. lazy[node<<]=lazy[node];
  24. lazy[node<<|]=lazy[node];
  25. tree[node<<]=lazy[node]*(mid-l+);
  26. tree[node<<|]=lazy[node]*(r-mid);
  27. lazy[node]=;
  28. }
  29. void update(int node,int l,int r,int x,int y,int z)
  30. {
  31. if(x<=l&&y>=r)
  32. {
  33. lazy[node]=z;
  34. tree[node]=(r-l+)*z;
  35. return;
  36. }
  37. int mid=(l+r)>>;
  38. if(lazy[node])push_down(node,l,r,mid);
  39.  
  40. if(x<=mid)update(node<<,l,mid,x,y,z);
  41. if(y>mid)update(node<<|,mid+,r,x,y,z);
  42. push_up(node);
  43. }
  44. int query(int node,int l,int r,int x,int y)
  45. {
  46. if(x<=l&&y>=r)
  47. {
  48. return tree[node];
  49. }
  50. int ans=;
  51. int mid=(l+r)>>;
  52. if(lazy[node])push_down(node,l,r,mid);
  53.  
  54. if(x<=mid)ans+=query(node<<,l,mid,x,y);
  55. if(y>mid)ans+=query(node<<|,mid+,r,x,y);
  56. return ans;
  57. }
  58. int main()
  59. {
  60. int t;scanf("%d",&t);int case_=;
  61. while(t--)
  62. {
  63. memset(lazy,,sizeof(lazy));
  64. int n;scanf("%d",&n);
  65. int q;scanf("%d",&q);
  66. build(,,n);
  67. while(q--)
  68. {
  69. int x,y,z;
  70. scanf("%d%d%d",&x,&y,&z);
  71. update(,,n,x,y,z);
  72. }
  73. printf("Case %d: The total value of the hook is %d.\n",++case_,query(,,n,,n));
  74. }
  75. return ;
  76. }

Just a Hook-HDU1698 区间染色+区间查询的更多相关文章

  1. POJ 2777.Count Color-线段树(区间染色+区间查询颜色数量二进制状态压缩)-若干年之前的一道题目。。。

    Count Color Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 53312   Accepted: 16050 Des ...

  2. HDU1698 Just a Hook —— 线段树 区间染色

    题目链接:https://vjudge.net/problem/HDU-1698 In the game of DotA, Pudge’s meat hook is actually the most ...

  3. hdu1698线段树的区间更新区间查询

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

  4. 线段树(区间树)之区间染色和4n推导过程

    前言 线段树(区间树)是什么呢?有了二叉树.二分搜索树,线段树又是干什么的呢?最经典的线段树问题:区间染色:正如它的名字而言,主要解决区间的问题 一.线段树说明 1.什么是线段树? 线段树首先是二叉树 ...

  5. POJ 1436 (线段树 区间染色) Horizontally Visible Segments

    这道题做了快两天了.首先就是按照这些竖直线段的横坐标进行从左到右排序. 将线段的端点投影到y轴上,线段树所维护的信息就是y轴区间内被哪条线段所覆盖. 对于一条线段来说,先查询和它能相连的所有线段,并加 ...

  6. POJ-2777 Count Color(线段树,区间染色问题)

    Count Color Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 40510 Accepted: 12215 Descrip ...

  7. 1082 线段树练习 3 && 树状数组区间修改区间查询

    1082 线段树练习 3 题意: 给定序列初值, 要求支持区间修改, 区间查询 Solution 用树状数组, 代码量小, 空间占用小 巧用增量数组, 修改时在 \(l\) 处 $ + val$ , ...

  8. 【bzoj5173】[Jsoi2014]矩形并 扫描线+二维树状数组区间修改区间查询

    题目描述 JYY有N个平面坐标系中的矩形.每一个矩形的底边都平行于X轴,侧边平行于Y轴.第i个矩形的左下角坐标为(Xi,Yi),底边长为Ai,侧边长为Bi.现在JYY打算从这N个矩形中,随机选出两个不 ...

  9. POJ.2528 Mayor's posters (线段树 区间更新 区间查询 离散化)

    POJ.2528 Mayor's posters (线段树 区间更新 区间查询 离散化) 题意分析 贴海报,新的海报能覆盖在旧的海报上面,最后贴完了,求问能看见几张海报. 最多有10000张海报,海报 ...

随机推荐

  1. 无法创建“System.Object”类型的常量值。此上下文仅支持基元类型或枚举类型

    Entity FreamWork 无法创建“System.Object”类型的常量值.此上下文仅支持基元类型或枚举类型错误解决: 最近在开发中把我原来抄的架构里面的主键由固定的Guid改成了可以泛型指 ...

  2. 排序算法之归并排序的python实现

    采用分治法: 分割:递归地把当前序列平均分割成两半. 集成:在保持元素顺序的同时将上一步得到的子序列集成到一起(归并). 归并操作(归并算法),指的是将两个已经排序的序列合并成一个序列的操作.归并排序 ...

  3. 原生js浏览器兼容性问题

    1.HTML对象获取问题 FireFox:document.getElementById(“idName”); ie:document.idname或者document.getElementById( ...

  4. HGAME 2020 misc

    week1 每日推荐 拿到Wireshark capture file后,按常规思路,用foremost命令拿到一个加密的压缩包,之后文件->导出对象->http,看到最大的一个文件里面最 ...

  5. 新手学习arm的建议

    本文来自:chen4013874的博客 如果您是ARM初学者或者以前是51单片机应用开发工程师,想快速进入32位ARM嵌入式开发领域,建议您阅读本文档.本文档是我们结合多年ARM开发经验,针对初学者对 ...

  6. nginx 解决 connect() failed (111: Connection refused) while connecting to upstream,

    嗯哼,刚装了个ubuntu的lnmp,我的天啊,踩的坑比我脂肪还多了 比如刚装完的时候访问显示502, 也不知道什么问题,就去看了一下nginx日志  /var/log/nginx/error.log ...

  7. SQL语句,pymysql模块,sql注入问题

    一.完整版SQL语句的查询 select distinct post,avg(salary) from table where id > 1 group by post` having avg( ...

  8. Linux格式化数据盘

      一块全新的数据盘挂载到ECS实例后,您必须创建并挂载至少一个文件系统.本示例使用I/O优化实例,操作系统为CentOS 7.6,为一块新的20GiB数据盘(设备名为/dev/vdb)创建一个MBR ...

  9. Yii2.0 引入外部js css

    <script src="<?= Yii::$app->request->baseUrl . '/js/jquery-2.1.1.min.js'?>" ...

  10. dateadd()日期加法运算