水。。。

  1. /**************************************************************
  2. Problem: 1012
  3. User: idy002
  4. Language: C++
  5. Result: Accepted
  6. Time:1372 ms
  7. Memory:5960 kb
  8. ****************************************************************/
  9.  
  10. #include <cstdio>
  11. #include <iostream>
  12. #define fprintf(...)
  13. #define oo 0x3f3f3f3f
  14. #define maxn 200010
  15. using namespace std;
  16.  
  17. namespace S {
  18. int pre[maxn], son[maxn][], siz[maxn], val[maxn], mv[maxn], root, ntot;
  19.  
  20. void update( int nd ) {
  21. siz[nd] = siz[son[nd][]]+siz[son[nd][]]+;
  22. mv[nd] = max( val[nd], max( mv[son[nd][]], mv[son[nd][]] ) );
  23. }
  24. void rotate( int nd, int d ) {
  25. int p = pre[nd];
  26. int s = son[nd][!d];
  27. int ss = son[s][d];
  28.  
  29. son[nd][!d] = ss;
  30. son[s][d] = nd;
  31. if( p ) son[p][ nd==son[p][] ] = s;
  32. else root = s;
  33.  
  34. pre[s] = p;
  35. pre[nd] = s;
  36. if( ss ) pre[ss] = nd;
  37.  
  38. update( nd );
  39. update( s );
  40. }
  41. void splay( int nd, int top= ) {
  42. while( pre[nd]!=top ) {
  43. int p = pre[nd];
  44. int nl = nd==son[p][];
  45. if( pre[p]==top ) {
  46. rotate( p, nl );
  47. } else {
  48. int pp = pre[p];
  49. int pl = p==son[pp][];
  50. if( nl==pl ) {
  51. rotate( pp, pl );
  52. rotate( p, nl );
  53. } else {
  54. rotate( p, nl );
  55. rotate( pp, pl );
  56. }
  57. }
  58. }
  59. }
  60. int newnode( int p, int v ) {
  61. int nd = ++ntot;
  62. pre[nd] = p;
  63. son[nd][] = son[nd][] = ;
  64. siz[nd] = ;
  65. mv[nd] = val[nd] = v;
  66. return nd;
  67. }
  68. int find( int pos ) {
  69. int nd = root;
  70. while( ) {
  71. int ls = siz[son[nd][]];
  72. if( pos<=ls ) {
  73. nd = son[nd][];
  74. } else if( pos>=ls+ ) {
  75. nd = son[nd][];
  76. pos -= ls+;
  77. } else return nd;
  78. }
  79. }
  80. void init() {
  81. root = ntot = ;
  82. val[] = mv[] = -oo;
  83. }
  84. void add_val( int v ) {
  85. fprintf( stderr, "add_val( %d )\n", v );
  86. if( !root ) {
  87. root = newnode( , v );
  88. return;
  89. }
  90. int nd = root;
  91. while( son[nd][] ) nd=son[nd][];
  92. son[nd][] = newnode( nd, v );
  93. splay( son[nd][] );
  94. }
  95. int qu_max( int pos ) {
  96. fprintf( stderr, "qu_max( %d )\n", pos );
  97. int nd = find(pos);
  98. splay( nd );
  99. return max( val[nd], mv[son[nd][]] );
  100. }
  101. };
  102.  
  103. int main() {
  104. int T, mod;
  105. int lastans = ;
  106.  
  107. scanf( "%d%d", &T, &mod );
  108. S::init();
  109. while( T-- ) {
  110. char opt[];
  111. int v;
  112. scanf( "%s%d", opt, &v );
  113. if( opt[]=='A' ) {
  114. v += lastans;
  115. v %= mod;
  116. S::add_val( v );
  117. } else {
  118. printf( "%d\n", lastans=S::qu_max( S::siz[S::root]-v+ ) );
  119. }
  120. }
  121. }

bzoj 1012 BST 支持插入,区间最大的更多相关文章

  1. 【BZOJ】3065: 带插入区间K小值

    http://www.lydsy.com/JudgeOnline/problem.php?id=3065 题意:带插入.修改的区间k小值在线查询.(原序列n<=35000, 询问<=175 ...

  2. bzoj 3065: 带插入区间K小值 替罪羊树 && AC300

    3065: 带插入区间K小值 Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 1062  Solved: 253[Submit][Status] Des ...

  3. 【题解】BZOJ 3065: 带插入区间K小值——替罪羊树套线段树

    题目传送门 题解 orz vfk的题解 3065: 带插入区间K小值 系列题解 一 二 三 四 惨 一开始用了一种空间常数很大的方法,每次重构的时候merge两颗线段树,然后无限RE(其实是MLE). ...

  4. BZOJ 3065 带插入区间K小值(sag套线段树)

    3065: 带插入区间K小值 Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 4696  Solved: 1527[Submit][Status][Di ...

  5. 【bzoj3065】带插入区间K小值 替罪羊树套权值线段树

    题目描述 从前有n只跳蚤排成一行做早操,每只跳蚤都有自己的一个弹跳力a[i].跳蚤国王看着这些跳蚤国欣欣向荣的情景,感到非常高兴.这时跳蚤国王决定理性愉悦一下,查询区间k小值.他每次向它的随从伏特提出 ...

  6. 【BZOJ3065】带插入区间K小值 替罪羊树+权值线段树

    [BZOJ3065]带插入区间K小值 Description 从前有n只跳蚤排成一行做早操,每只跳蚤都有自己的一个弹跳力a[i].跳蚤国王看着这些跳蚤国欣欣向荣的情景,感到非常高兴.这时跳蚤国王决定理 ...

  7. 3065: 带插入区间K小值_树套树_替罪羊树_权值线段树

    经过周六一天,周一3个小时的晚自习,周二2个小时的疯狂debug,终于凭借自己切掉了这道树套树题. Code: #include <cstdio> #include <algorit ...

  8. 【学习笔记】浅析平衡树套线段树 & 带插入区间K小值

    常见的树套树 一般来说,在嵌套数据结构中,线段树多被作为外层结构使用. 但线段树毕竟是 静态 的结构,导致了一些不便. 下面是一个难以维护的例子: 带插入区间 \(k\) 小值问题 来源:Luogu ...

  9. lintcode:插入区间

    题目: 插入区间 给出一个无重叠的按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 样例 插入区间[2, 5] 到 [ ...

随机推荐

  1. IE6透明PNG解决方案

    IE6不支持PNG-24图片一直困扰很多人,但是可以通过IE的独有的滤镜来解决,解决的方案很多,比如:将滤镜写在CSS里,还可以写成单独的 Javascript文件,本来认为推荐两种做法:第一种,将所 ...

  2. laravel学习教程整理

    百度传课:https://chuanke.baidu.com/v5847462-219167-1421398.html

  3. CRF++进行中文分词实例

    工具包:https://taku910.github.io/crfpp/#tips 语料:http://sighan.cs.uchicago.edu/bakeoff2005/ 安装: 1)下载linu ...

  4. stegsolve使用探究

    应该也不是工具的问题吧,更多的是图片.但是不知道咋取就写工具了. 比如:http://ctf5.shiyanbar.com/stega/chromatophoria/steg.png 我在想为毛要选择 ...

  5. 利用pycharm运行scrapy以及scrapy的配置

    1.安装两个whl文件 https://pypi.python.org/pypi/Twisted 下载Twisted的whl文件 https://pypi.python.org/pypi/Scrapy ...

  6. Codeforces Round #441 (Div. 2)

    Codeforces Round #441 (Div. 2) A. Trip For Meal 题目描述:给出\(3\)个点,以及任意两个点之间的距离,求从\(1\)个点出发,再走\(n-1\)个点的 ...

  7. MYSQL三种安装方式--rpm包安装

    1. 首先检查机器里是否已经存在MySQL $ rpm -qa | grep mysql 2. 去官网下载相应的rpm包:https://dev.mysql.com/downloads/mysql/ ...

  8. 5.Python3标准库-日期和时间

    ''' 不同于int,str,float,Python没有包含对应日期和时间的原生类型,不过提供了3个相应的模块,可以采用多种表示来管理日期和时间值 time模块由底层C库提供与时间相关的函数.它包含 ...

  9. ActiveMQ-如何使用JMS API?

    JMS编程模型 JMS定义了Java中访问消息中间件的一组接口,主要包括ConnectionFactory.Connection.Session.Destination.MessageProducer ...

  10. 以太坊go-ethereum项目源码本地环境搭建

    如果要深入了解go-ethereum项目的实现与机制,看源代码是必不可少的.今天这篇博客就简单介绍一下如何在本地搭建项目的开发环境. GO语言环境搭建 以win8为例,访问地址https://gola ...