bzoj 1012 BST 支持插入,区间最大
水。。。
- /**************************************************************
- Problem: 1012
- User: idy002
- Language: C++
- Result: Accepted
- Time:1372 ms
- Memory:5960 kb
- ****************************************************************/
- #include <cstdio>
- #include <iostream>
- #define fprintf(...)
- #define oo 0x3f3f3f3f
- #define maxn 200010
- using namespace std;
- namespace S {
- int pre[maxn], son[maxn][], siz[maxn], val[maxn], mv[maxn], root, ntot;
- void update( int nd ) {
- siz[nd] = siz[son[nd][]]+siz[son[nd][]]+;
- mv[nd] = max( val[nd], max( mv[son[nd][]], mv[son[nd][]] ) );
- }
- void rotate( int nd, int d ) {
- int p = pre[nd];
- int s = son[nd][!d];
- int ss = son[s][d];
- son[nd][!d] = ss;
- son[s][d] = nd;
- if( p ) son[p][ nd==son[p][] ] = s;
- else root = s;
- pre[s] = p;
- pre[nd] = s;
- if( ss ) pre[ss] = nd;
- update( nd );
- update( s );
- }
- void splay( int nd, int top= ) {
- while( pre[nd]!=top ) {
- int p = pre[nd];
- int nl = nd==son[p][];
- if( pre[p]==top ) {
- rotate( p, nl );
- } else {
- int pp = pre[p];
- int pl = p==son[pp][];
- if( nl==pl ) {
- rotate( pp, pl );
- rotate( p, nl );
- } else {
- rotate( p, nl );
- rotate( pp, pl );
- }
- }
- }
- }
- int newnode( int p, int v ) {
- int nd = ++ntot;
- pre[nd] = p;
- son[nd][] = son[nd][] = ;
- siz[nd] = ;
- mv[nd] = val[nd] = v;
- return nd;
- }
- int find( int pos ) {
- int nd = root;
- while( ) {
- int ls = siz[son[nd][]];
- if( pos<=ls ) {
- nd = son[nd][];
- } else if( pos>=ls+ ) {
- nd = son[nd][];
- pos -= ls+;
- } else return nd;
- }
- }
- void init() {
- root = ntot = ;
- val[] = mv[] = -oo;
- }
- void add_val( int v ) {
- fprintf( stderr, "add_val( %d )\n", v );
- if( !root ) {
- root = newnode( , v );
- return;
- }
- int nd = root;
- while( son[nd][] ) nd=son[nd][];
- son[nd][] = newnode( nd, v );
- splay( son[nd][] );
- }
- int qu_max( int pos ) {
- fprintf( stderr, "qu_max( %d )\n", pos );
- int nd = find(pos);
- splay( nd );
- return max( val[nd], mv[son[nd][]] );
- }
- };
- int main() {
- int T, mod;
- int lastans = ;
- scanf( "%d%d", &T, &mod );
- S::init();
- while( T-- ) {
- char opt[];
- int v;
- scanf( "%s%d", opt, &v );
- if( opt[]=='A' ) {
- v += lastans;
- v %= mod;
- S::add_val( v );
- } else {
- printf( "%d\n", lastans=S::qu_max( S::siz[S::root]-v+ ) );
- }
- }
- }
bzoj 1012 BST 支持插入,区间最大的更多相关文章
- 【BZOJ】3065: 带插入区间K小值
http://www.lydsy.com/JudgeOnline/problem.php?id=3065 题意:带插入.修改的区间k小值在线查询.(原序列n<=35000, 询问<=175 ...
- bzoj 3065: 带插入区间K小值 替罪羊树 && AC300
3065: 带插入区间K小值 Time Limit: 60 Sec Memory Limit: 512 MBSubmit: 1062 Solved: 253[Submit][Status] Des ...
- 【题解】BZOJ 3065: 带插入区间K小值——替罪羊树套线段树
题目传送门 题解 orz vfk的题解 3065: 带插入区间K小值 系列题解 一 二 三 四 惨 一开始用了一种空间常数很大的方法,每次重构的时候merge两颗线段树,然后无限RE(其实是MLE). ...
- BZOJ 3065 带插入区间K小值(sag套线段树)
3065: 带插入区间K小值 Time Limit: 60 Sec Memory Limit: 512 MBSubmit: 4696 Solved: 1527[Submit][Status][Di ...
- 【bzoj3065】带插入区间K小值 替罪羊树套权值线段树
题目描述 从前有n只跳蚤排成一行做早操,每只跳蚤都有自己的一个弹跳力a[i].跳蚤国王看着这些跳蚤国欣欣向荣的情景,感到非常高兴.这时跳蚤国王决定理性愉悦一下,查询区间k小值.他每次向它的随从伏特提出 ...
- 【BZOJ3065】带插入区间K小值 替罪羊树+权值线段树
[BZOJ3065]带插入区间K小值 Description 从前有n只跳蚤排成一行做早操,每只跳蚤都有自己的一个弹跳力a[i].跳蚤国王看着这些跳蚤国欣欣向荣的情景,感到非常高兴.这时跳蚤国王决定理 ...
- 3065: 带插入区间K小值_树套树_替罪羊树_权值线段树
经过周六一天,周一3个小时的晚自习,周二2个小时的疯狂debug,终于凭借自己切掉了这道树套树题. Code: #include <cstdio> #include <algorit ...
- 【学习笔记】浅析平衡树套线段树 & 带插入区间K小值
常见的树套树 一般来说,在嵌套数据结构中,线段树多被作为外层结构使用. 但线段树毕竟是 静态 的结构,导致了一些不便. 下面是一个难以维护的例子: 带插入区间 \(k\) 小值问题 来源:Luogu ...
- lintcode:插入区间
题目: 插入区间 给出一个无重叠的按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 样例 插入区间[2, 5] 到 [ ...
随机推荐
- IE6透明PNG解决方案
IE6不支持PNG-24图片一直困扰很多人,但是可以通过IE的独有的滤镜来解决,解决的方案很多,比如:将滤镜写在CSS里,还可以写成单独的 Javascript文件,本来认为推荐两种做法:第一种,将所 ...
- laravel学习教程整理
百度传课:https://chuanke.baidu.com/v5847462-219167-1421398.html
- CRF++进行中文分词实例
工具包:https://taku910.github.io/crfpp/#tips 语料:http://sighan.cs.uchicago.edu/bakeoff2005/ 安装: 1)下载linu ...
- stegsolve使用探究
应该也不是工具的问题吧,更多的是图片.但是不知道咋取就写工具了. 比如:http://ctf5.shiyanbar.com/stega/chromatophoria/steg.png 我在想为毛要选择 ...
- 利用pycharm运行scrapy以及scrapy的配置
1.安装两个whl文件 https://pypi.python.org/pypi/Twisted 下载Twisted的whl文件 https://pypi.python.org/pypi/Scrapy ...
- Codeforces Round #441 (Div. 2)
Codeforces Round #441 (Div. 2) A. Trip For Meal 题目描述:给出\(3\)个点,以及任意两个点之间的距离,求从\(1\)个点出发,再走\(n-1\)个点的 ...
- MYSQL三种安装方式--rpm包安装
1. 首先检查机器里是否已经存在MySQL $ rpm -qa | grep mysql 2. 去官网下载相应的rpm包:https://dev.mysql.com/downloads/mysql/ ...
- 5.Python3标准库-日期和时间
''' 不同于int,str,float,Python没有包含对应日期和时间的原生类型,不过提供了3个相应的模块,可以采用多种表示来管理日期和时间值 time模块由底层C库提供与时间相关的函数.它包含 ...
- ActiveMQ-如何使用JMS API?
JMS编程模型 JMS定义了Java中访问消息中间件的一组接口,主要包括ConnectionFactory.Connection.Session.Destination.MessageProducer ...
- 以太坊go-ethereum项目源码本地环境搭建
如果要深入了解go-ethereum项目的实现与机制,看源代码是必不可少的.今天这篇博客就简单介绍一下如何在本地搭建项目的开发环境. GO语言环境搭建 以win8为例,访问地址https://gola ...