N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?

Input每个测试实例第一行为一个整数N,(N <= 100000).接下来的N行,每行包括2个整数a b(1 <= a <= b <= N)。
当N = 0,输入结束。Output每个测试实例输出一行,包括N个整数,第I个数代表第I个气球总共被涂色的次数。Sample Input

  1. 3
  2. 1 1
  3. 2 2
  4. 3 3
  5. 3
  6. 1 1
  7. 1 2
  8. 1 3
  9. 0

Sample Output

  1. 1 1 1
  2. 3 2 1

题意:长度为n的区间,n次更新,每一次都将该区间的气球的颜色染一次色,问最终每一个气球染了几次色。

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cmath>
  4. #include<iostream>
  5. #include<algorithm>
  6. using namespace std;
  7. const int MAXN=2e5+;
  8. typedef long long ll;
  9. #define lson l,m,i<<1
  10. #define rson m+1,r,i<<1|1
  11. typedef struct Node
  12. {
  13. ll l,r;
  14. ll mid()
  15. {
  16. return (l+r)/2.0;
  17. }
  18. ll value;
  19. } Node;
  20. Node node[MAXN<<];
  21. ll sum[MAXN<<];
  22. ll add[MAXN<<];
  23. void push_up(ll i)
  24. {
  25. sum[i]=sum[i<<]+sum[i<<|];
  26. }
  27. void Build(ll l,ll r,ll i)
  28. {
  29. node[i].l=l;
  30. node[i].r=r;
  31. node[i].value=;
  32. sum[i]=;
  33. add[i]=;
  34. if(l==r)
  35. {
  36. sum[i]=;
  37. node[i].value=;
  38. return ;
  39. }
  40. ll m=node[i].mid();
  41. Build(lson);
  42. Build(rson);
  43. push_up(i);
  44. }
  45. ll M;
  46. void Push_down(ll i,ll len)
  47. {
  48. if(add[i])
  49. {
  50. add[i<<]+=add[i];
  51. add[i<<|]+=add[i];
  52. sum[i<<]+=add[i]*(len-(len>>));
  53. sum[i<<|]+=add[i]*(len>>);
  54. add[i]=;
  55. }
  56. }
  57. void query(ll l,ll r,ll i)
  58. {
  59. if(node[i].l==l&&node[i].r==r)
  60. {
  61. M+=sum[i];
  62. return;
  63. }
  64. ll m=node[i].mid();
  65. Push_down(i,node[i].r-node[i].l+);
  66. if(r<=m)
  67. query(l,r,i<<);
  68. else
  69. {
  70. if(l>m)
  71. query(l,r,i<<|);
  72. else
  73. {
  74. query(lson);
  75. query(rson);
  76. }
  77. }
  78. }
  79. void update(ll l,ll r,ll i,ll v)
  80. {
  81.  
  82. if(node[i].r==r&&node[i].l==l)
  83. {
  84. add[i]+=v;
  85. sum[i]+=v*(r-l+);
  86. return;
  87. }
  88. ll m=node[i].mid();
  89. Push_down(i,node[i].r-node[i].l+);
  90. if(r<=m)
  91. update(l,r,i<<,v);
  92. else
  93. {
  94. if(l>m)
  95. update(l,r,i<<|,v);
  96.  
  97. else
  98. {
  99. update(l,m,i<<,v);
  100. update(m+,r,i<<|,v);
  101. }
  102. }
  103. push_up(i);
  104. }
  105. int main()
  106. {
  107. ll m,n,a,b,T,c;
  108. ll flag=;
  109. while(scanf("%lld",&m)!=-&&m)
  110. {
  111. ll k=m;
  112. Build(,m,);
  113. while(k--)
  114. {
  115. scanf("%lld%lld",&a,&b);
  116. update(a,b,,);
  117. }
  118. for(ll i=;i<=m;i++)
  119. {
  120. M=;
  121. query(i,i,);
  122. printf("%lld%c",M,i==m?'\n':' ');
  123. }
  124. }
  125. return ;
  126. }

题解:线段树的区间更新问题,上篇博客每行代码有详细解释。

Color the ball (线段树的区间更新问题)的更多相关文章

  1. ZOJ 2301 Color the Ball 线段树(区间更新+离散化)

    Color the Ball Time Limit: 2 Seconds      Memory Limit: 65536 KB There are infinite balls in a line ...

  2. hdu 1556:Color the ball(线段树,区间更新,经典题)

    Color the ball Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  3. HDU.1556 Color the ball (线段树 区间更新 单点查询)

    HDU.1556 Color the ball (线段树 区间更新 单点查询) 题意分析 注意一下pushdown 和 pushup 模板类的题还真不能自己套啊,手写一遍才行 代码总览 #includ ...

  4. HDU 1556 Color the ball(线段树:区间更新)

    http://acm.hdu.edu.cn/showproblem.php?pid=1556 题意: N个气球,每次[a,b]之间的气球涂一次色,统计每个气球涂色的次数. 思路: 这道题目用树状数组和 ...

  5. hdu 1698:Just a Hook(线段树,区间更新)

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

  6. UVA 12436-Rip Van Winkle's Code(线段树的区间更新)

    题意: long long data[250001]; void A( int st, int nd ) { for( int i = st; i \le nd; i++ ) data[i] = da ...

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

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

  8. zoj3686(线段树的区间更新)

    对线段树的区间更新有了初步的了解... A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a ...

  9. 线段树离散化+区间更新——cf1179C好题

    绝对是很好的题 把问题转化成当第i个询问的答案是数值x时是否可行 要判断值x是否可行,只要再将问题转化成a数组里>=x的值数量是否严格大于b数组里的>=x的值 那么线段树叶子结点维护对于值 ...

随机推荐

  1. Arcgis Add-In开发入门实例

    作为一个本科侧重于应用,工作之后却做了开发的程序员来说,做GIS,开发应该是一门必修课,只是,苦于各种原因吧,做GIS应用的人会开发的很少,做GIS开发的大部分都是计算机出身,痛心疾首啊-- 不好意思 ...

  2. vue动态 设置类名

    <div class="tab"> <navigator :class="currentTab=='mzfw'?'nav active': 'nav'& ...

  3. 运用 jenkins 让你的项目优雅的持续化集成

    0.到系统管理->系统设置 1.安装插件 Publish over SSH 2.配置 Publish over SSH 参数 1.pass 是私钥密码,此私钥文件放在安装 jenkins 的主机 ...

  4. UltraEdit工具安装和注册机破解

    1.关闭网络连接(或者直接拔掉网线). 2.打开UltraEdit软件,稍等片刻会出现提示你你使用的是试用版本的窗口.如下图,点击“注册”. 3.填写许可证id和密码.许可证id可任意填写,不过根据经 ...

  5. fn project 试用之后的几个问题的解答

    今天试用fnproject  之后自己有些思考,后面继续解决   1. 目前测试是强依赖 dockerhub 的,实际可能不是很方便 2. 如何与k8s .mesos.docker swarm  集成 ...

  6. nginx time_wait 较多优化

    1. 查看命令   netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'   结果 ESTABLISHED 22 F ...

  7. Pod Installing openssl-ios-bitcode报错

    pod update --no-repo-update 问题:执行上面的操作之后,pod在安装ssl的时候会报错.部分报错信息如下: localhost:OpenSSLTest Later$ pod ...

  8. FastAdmin + uni-app

    FastAdmin + uni-app FastAdmin https://www.FastAdmin.net uni-app http://uniapp.dcloud.io/ 自己先挖个坑.

  9. mybatis-generator的坑

    有天发现mybatis-generator不能用,要加什么根项目前缀, 搞到我重新从github下载,然后发现仓库用不了,原来新项目会改我的maven配置(新坑 后来终于明白要在子项目栏使用手脚架,就 ...

  10. [转]json-lib 的maven dependency

    转载自http://www.cnblogs.com/yqskj/archive/2013/05/27/3101934.html 项目中要用到json-lib,mvnrepository.com查找它的 ...