题目链接

二分求上界和下界,树状数组。注意特殊情况。

  1. #include <cstring>
  2. #include <cstdio>
  3. #include <string>
  4. #include <iostream>
  5. #include <algorithm>
  6. #include <vector>
  7. using namespace std;
  8. int p[];
  9. int o[];
  10. int stack[];
  11. int n;
  12. int lowbit(int t)
  13. {
  14. return t&(-t);
  15. }
  16. void insert(int t,int d)
  17. {
  18. while(t <= n)
  19. {
  20. p[t] += d;
  21. t += lowbit(t);
  22. }
  23. }
  24. int getsum(int t)
  25. {
  26. int sum = ;
  27. while(t > )
  28. {
  29. sum += p[t];
  30. t -= lowbit(t);
  31. }
  32. return sum;
  33. }
  34. int fr(int x)
  35. {
  36. int str,end,temp,mid;
  37. str = ;
  38. end = n;
  39. while(str < end)
  40. {
  41. mid = (str+end+)/;
  42. temp = getsum(mid);
  43. if(temp > x)
  44. end = mid-;
  45. else
  46. str = mid;
  47. }
  48. return end;
  49. }
  50. int fl(int x)
  51. {
  52. int str,end,temp,mid;
  53. str = ;
  54. end = n;
  55. while(str < end)
  56. {
  57. mid = (str+end)/;
  58. temp = getsum(mid);
  59. if(temp < x)
  60. str = mid+;
  61. else
  62. end = mid;
  63. }
  64. return str;
  65. }
  66. int main()
  67. {
  68. int i,m,top,num,t;
  69. char ch[];
  70. while(scanf("%d%d",&n,&m)!=EOF)
  71. {
  72. top = ;
  73. for(i = ;i <= n;i ++)
  74. {
  75. p[i] = ;
  76. o[i] = ;
  77. }
  78. for(i = ; i <= m; i ++)
  79. {
  80. scanf("%s",ch);
  81. if(ch[] == 'R')
  82. {
  83. if(top != )
  84. {
  85. o[stack[top]] = ;
  86. insert(stack[top--],-);
  87. }
  88. }
  89. else if(ch[] == 'D')
  90. {
  91. scanf("%d",&num);
  92. stack[++top] = num;
  93. if(o[num] == )
  94. {
  95. o[num] = ;
  96. insert(num,);
  97. }
  98. }
  99. else if(ch[] == 'Q')
  100. {
  101. scanf("%d",&num);
  102. if(o[num])
  103. printf("0\n");
  104. else
  105. {
  106. t = getsum(num);
  107. if(t == )//注意一下
  108. printf("%d\n",fr(t));
  109. else
  110. printf("%d\n",fr(t)-fl(t));
  111. }
  112. }
  113. }
  114. }
  115. return ;
  116. }

POJ 2892 Tunnel Warfare(树状数组+二分)的更多相关文章

  1. Tunnel Warfare(树状数组+二分)

    http://poj.org/problem?id=2892 题意:输入n,m.n代表数轴的长度,m代表操作数. D x: 摧毁点x Q x: 询问村庄x最左与最右没有被摧毁的点的距离 R  :恢复最 ...

  2. POJ 2182 Lost Cows (树状数组 && 二分查找)

    题意:给出数n, 代表有多少头牛, 这些牛的编号为1~n, 再给出含有n-1个数的序列, 每个序列的数 ai 代表前面还有多少头比 ai 编号要小的牛, 叫你根据上述信息还原出原始的牛的编号序列 分析 ...

  3. POJ 2828 Buy Tickets (线段树 or 树状数组+二分)

    题目链接:http://poj.org/problem?id=2828 题意就是给你n个人,然后每个人按顺序插队,问你最终的顺序是怎么样的. 反过来做就很容易了,从最后一个人开始推,最后一个人位置很容 ...

  4. POJ 2182 Lost Cows 【树状数组+二分】

    题目链接:http://poj.org/problem?id=2182 Lost Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...

  5. TZOJ 4602 高桥和低桥(二分或树状数组+二分)

    描述 有个脑筋急转弯是这样的:有距离很近的一高一低两座桥,两次洪水之后高桥被淹了两次,低桥却只被淹了一次,为什么?答案是:因为低桥太低了,第一次洪水退去之后水位依然在低桥之上,所以不算“淹了两次”.举 ...

  6. 树状数组+二分||线段树 HDOJ 5493 Queue

    题目传送门 题意:已知每个人的独一无二的身高以及排在他前面或者后面比他高的人数,问身高字典序最小的排法 分析:首先对身高从矮到高排序,那么可以知道每个人有多少人的身高比他高,那么取较小值(k[i], ...

  7. P2161 [SHOI2009]会场预约[线段树/树状数组+二分/STL]

    题目描述 PP大厦有一间空的礼堂,可以为企业或者单位提供会议场地.这些会议中的大多数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议的时间申请不能够冲突.也就是说,前一个 ...

  8. The Stream of Corning 2( 权值线段树/(树状数组+二分) )

    题意: 有两种操作:1.在[l,r]上插入一条值为val的线段 2.问p位置上值第k小的线段的值(是否存在) 特别的,询问的时候l和p合起来是一个递增序列 1<=l,r<=1e9:1< ...

  9. 牛客多校第3场 J 思维+树状数组+二分

    牛客多校第3场 J 思维+树状数组+二分 传送门:https://ac.nowcoder.com/acm/contest/883/J 题意: 给你q个询问,和一个队列容量f 询问有两种操作: 0.访问 ...

随机推荐

  1. 【转】Python3学习笔记(urllib模块的使用)

    原文地址:https://www.cnblogs.com/Lands-ljk/p/5447127.html 1.基本方法 urllib.request.urlopen(url, data=None,  ...

  2. HDU-1829 A Bug's Life。并查集构造,与POJ1709异曲同工!

    A Bug's Life                                                     Find them, Catch them 都是并查集构造的题,不久前 ...

  3. CentOS 7.0如何安装配置iptables和seLinux以及firewalld

    一.配置防火墙,开启80端口.3306端口 CentOS .0默认使用的是firewall作为防火墙,这里改为iptables防火墙. .关闭firewall: systemctl stop fire ...

  4. web.xml不同的头文件

    <转自:http://blog.csdn.net/qq_16313365/article/details/53783288> 1. Servlet 3.1 Java EE 7 XML sc ...

  5. 只操作git(cmd)就可以使用git将项目上传到github

    代码改变世界 使用git将项目上传到github(最简单方法) 首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安装git工具, ...

  6. BZOJ 3282 Tree ——Link-Cut Tree

    [题目分析] 明显的LCT维护连通性的题目. access的操作是比较巧妙的,可以把结点到根变成偏爱路径,而且保证了该点是链上深度最深的点. 而且需边的思想也很巧妙,保证了复杂度. 但是只能用于修改路 ...

  7. 洛谷P3758 - [TJOI2017]可乐

    Portal Description 给出一张\(n(n\leq30)\)个点\(m(m\leq100)\)条边的无向图.初始时有一个可乐机器人在点\(1\),这个机器人每秒会做出以下三种行为之一:原 ...

  8. bzoj1064【Noi2008】假面舞会

    题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1064 给一个有向图染色,每个点的后继必须相同,问至少&至多有多少种染色方案 sol: ...

  9. 刷题总结——教主的魔法(bzoj3343)

    题目: Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.…….N. ...

  10. [HDU-4825] Xor-Sum (01字典树)

    Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeu ...