1. #include <iostream>
  2. #include <algorithm>
  3. #include <string.h>
  4. #include <stdio.h>
  5. #define N 100010
  6. using namespace std;
  7. int n,tt,le;
  8. char a[N][];
  9. int m[N],X[N];
  10. struct node
  11. {
  12. int l,r,w;
  13. } q[*N];
  14. void pushup(int rt)
  15. {
  16. q[rt].w=q[rt<<].w+q[rt<<|].w;
  17. }
  18. void build(int l,int r,int rt)
  19. {
  20. q[rt].l=l;
  21. q[rt].r=r;
  22. q[rt].w=;
  23. if(l==r) return ;
  24. int mid=(l+r)>>;
  25. build(l,mid,rt<<);
  26. build(mid+,r,rt<<|);
  27. }
  28. void update(int l,int r,int rt,int key)
  29. {
  30. if(l==r&&r==key)
  31. {
  32. q[rt].w=;
  33. return ;
  34. }
  35. int mid=(l+r)>>;
  36. if(key<=mid) update(l,mid,rt<<,key);
  37. else update(mid+,r,rt<<|,key);
  38. pushup(rt);
  39. return ;
  40. }
  41. int query(int l,int r,int rt,int key)
  42. {
  43. if(l==r)
  44. {
  45. return l;
  46. }
  47. int mid=(l+r)>>;
  48. if(key<=q[rt<<].w) return query(l,mid,rt<<,key);
  49. else return query(mid+,r,rt<<|,key-q[rt<<].w);
  50. }
  51. int main()
  52. {
  53. while(scanf("%d",&n)!=EOF)
  54. {
  55. tt=;
  56. for(int i=; i<n; i++)
  57. {
  58. scanf("%s%d",a[i],&m[i]);
  59. if(a[i][]=='P')
  60. {
  61. X[tt++]=m[i];
  62. }
  63. }
  64. sort(X,X+tt);
  65. int sum=unique(X,X+tt)-X;
  66. build(,sum,);
  67. for(int i=; i<n; i++)
  68. {
  69. if(a[i][]=='P')
  70. {
  71. le=lower_bound(X,X+sum,m[i])-X+;
  72. update(,sum,,le);
  73. }
  74. else if(a[i][]=='Q')
  75. {
  76. if(q[].w<m[i])
  77. {
  78. printf("-1\n");
  79. }
  80. else
  81. {
  82. int tt=query(,sum,,m[i]);
  83. printf("%d\n",X[tt-]);
  84. }
  85. }
  86. }
  87. }
  88. return ;
  89. }

sdut 迷之容器(线段树+离散化)的更多相关文章

  1. POJ 2528 Mayor's posters(线段树+离散化)

    Mayor's posters 转载自:http://blog.csdn.net/winddreams/article/details/38443761 [题目链接]Mayor's posters [ ...

  2. poj 2528 Mayor's posters(线段树+离散化)

    /* poj 2528 Mayor's posters 线段树 + 离散化 离散化的理解: 给你一系列的正整数, 例如 1, 4 , 100, 1000000000, 如果利用线段树求解的话,很明显 ...

  3. [poj2528] Mayor's posters (线段树+离散化)

    线段树 + 离散化 Description The citizens of Bytetown, AB, could not stand that the candidates in the mayor ...

  4. [UESTC1059]秋实大哥与小朋友(线段树, 离散化)

    题目链接:http://acm.uestc.edu.cn/#/problem/show/1059 普通线段树+离散化,关键是……离散化后建树和查询都要按照基本法!!!RE了不知道多少次………………我真 ...

  5. poj 2528 Mayor's posters 线段树+离散化技巧

    poj 2528 Mayor's posters 题目链接: http://poj.org/problem?id=2528 思路: 线段树+离散化技巧(这里的离散化需要注意一下啊,题目数据弱看不出来) ...

  6. BZOJ_4653_[Noi2016]区间_线段树+离散化+双指针

    BZOJ_4653_[Noi2016]区间_线段树+离散化+双指针 Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间, ...

  7. D - Mayor's posters(线段树+离散化)

    题目: The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campai ...

  8. 主席树||可持久化线段树+离散化 || 莫队+分块 ||BZOJ 3585: mex || Luogu P4137 Rmq Problem / mex

    题面:Rmq Problem / mex 题解: 先离散化,然后插一堆空白,大体就是如果(对于以a.data<b.data排序后的A)A[i-1].data+1!=A[i].data,则插一个空 ...

  9. HDU5124:lines(线段树+离散化)或(离散化思想)

    http://acm.hdu.edu.cn/showproblem.php?pid=5124 Problem Description John has several lines. The lines ...

  10. hdu1542 矩形面积并(线段树+离散化+扫描线)

    题意: 给你n个矩形,输入每个矩形的左上角坐标和右下角坐标. 然后求矩形的总面积.(矩形可能相交). 题解: 前言: 先说说做这道题的感受: 刚看到这道题顿时就懵逼了,几何 烂的渣渣.后来从网上搜题解 ...

随机推荐

  1. shell脚本中,将所有的参数值否赋给一个变量或者说将所有的参数合成一个字符串,获取所有参数

    需求描述: 在写脚本的过程中,遇到这样的一个需求,将脚本执行过程中,传递给 脚本的所有的参数,都赋值给一个变量然后在对这个变量进行处理. 测试过程: 通过以下的脚本将所有传递给脚本的变量都赋值一个变量 ...

  2. tiny6410SDK制作NFS文件系统

    1.初次编译内核出现问题 解决方法:将uboot的tools目录 下的mkimage拷贝到/bin/下. 2.开机后终端出现mmc0: error -110 whilst initialising S ...

  3. Credential

    https://www.cnblogs.com/Hawk-Hong/p/4293651.html 在项目开发,我们经常会使用WebService,但在使用WebService时我们经常会考虑以下问题: ...

  4. java中Double的isInfinite()和isNaN()

    在Double和Float类中都有这两个方法,用于判断是否是无穷大及是否为非数字 public boolean isInfinite()如果此对象表示的值是正无穷大或负无穷大,则返回 true:否则返 ...

  5. Intel S5000VSA(SAS)主板设置RAID 步骤【转】

    Intel S5000VSA(SAS)主板设置RAID 步骤 我近日亲自安 装了一台服务器,用的是intel S5000VSA 4DIMM主板,因为在安装过程中没有注意到一些细节,所以在安装时碰到了一 ...

  6. 集群--LVS的介绍

       相关概念 LVS体系结构如图所示,一组服务器通过高速的局域网或者地理分布的广域网相互连接,在它们的前端有一个负载调度器(Load Balancer).负载调度器能无缝地将网络请求调度到真实服务器 ...

  7. 使用WdatePicker获取比当前时间大的写法

    <input name="today.date" class="Wdate" type="text" onClick="Wd ...

  8. JS时间格式化函数

    Date.prototype.format = function (format) { var o = { "M+": this.getMonth() + 1, //month & ...

  9. 《转》python学习(9)字典

    转自 http://www.cnblogs.com/BeginMan/p/3156960.html 一.映射类型 我理解中的映射类型是:键值对的关系,键(key)映射值(value),且它们是一对多的 ...

  10. <转>SVM实现之SMO算法

    转自http://blog.csdn.net/zouxy09/article/details/17292011 终于到SVM的实现部分了.那么神奇和有效的东西还得回归到实现才可以展示其强大的功力.SV ...