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. 判断字符串String是否为空问题

    一.判断一个字符串str不为空的方法有: 1.str == null; 2."".equals(str): 3.str.length <= 0; 4.str.isEmpty( ...

  2. Windows网络编程Internet Gopher了解下

    Gopher:中文译“地鼠”,是迪士尼卡通人物之一(谷佛). 英文原义:The Internet Gopher Protocol 中文释义:(RFC-1436)网际Gopher协议 该系统是在明尼苏达 ...

  3. codeforces 547A Mike and Frog

    近期都是这样的题呢. . .... 哎 開始想纯暴力(体如今跳出循环t>=那里.,,,)..,.随着数据变大.. ...(t=499981500166是能够的),,,..,,23333333 超 ...

  4. 自定向下分析Binder 之 Binder Model(1)

    Java层的Binder对象模型: IBinder IBinder是Binder通信机制中的核心部分(Base interface for a remotable object, the core p ...

  5. CCNet持续集成编译中SVN问题解决

    SVN问题 BUILD EXCEPTION Error Message: ThoughtWorks.CruiseControl.Core.CruiseControlException: Source ...

  6. oracle中的内连接和外连接区别

    表t_user1,t_user2,t_user3,各有id,name两列 id name 1 10A 2 20A id name 1 10B 3 30B id name 1 10C 4 40C 连接分 ...

  7. Android中的动画,选择器,样式和主题的使用

    一.动画: 1.动画的分类: 1).Tween动画:这种实现方式可以使视图组件移动.放大.缩小以及产生透明度的变化: 2).Frame动画:传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影. ...

  8. C++中的枚举变量

    至从C语言开始enum类型就被作为用户自定义分类有限集合常量的方法被引入到了语言当中,而且一度成为C++中定义编译期常量的唯一方法(后来在类中引入了静态整型常量).根据上面对enum类型的描述,有以下 ...

  9. 《C++ Primer Plus》14.2 私有继承 学习笔记

    C++(除了成员变量之外)还有另一种实现has-a关系的途径——私有继承.使用私有继承,基类的公有成员和保护成员都将成为派生类的私有成员.(如果使用保护继承,基类的公有成员和保护成员都将称为派生类的保 ...

  10. Android 实现动态匹配输入的内容 AutoCompleteTextView和MultiAutoCompleteTextView

    AutoCompleteTextView1.功能:动态匹配输入的内容,如百度搜索引擎当输入文本时可以根据内容显示匹配的热门信息.2.独特属性:android:completionThreshold 设 ...