【JSOI2008】最大数
https://www.luogu.org/problem/show?pid=1198
之前刚学完Splay想找题练手的时候做的,写完Splay交上去了才发现这应该是线段树裸题23333
Splay解法
按照要求操作即可……
#include <iostream>
using namespace std;
int m, d, t;
const int inf = 0x7fffffff;
namespace splay
{
struct node;
node *nil = , *root;
struct node
{
int val, size, maxnum;
node *ch[];
node(int v) : val(v), size(), maxnum(v)
{
ch[] = ch[] = nil;
}
void pull_up()
{
size = ch[]->size + ch[]->size + ;
maxnum = max(val, max(ch[]->maxnum, ch[]->maxnum));
}
int cmp(int k)
{
if(this == nil || k == ch[]->size + )
return -;
else
return (k <= ch[]->size) ? : ;
}
};
void init()
{
if(!nil)
nil = new node(-inf);
nil->size = ;
nil->ch[] = nil->ch[] = nil;
root = new node(-inf);
root->ch[] = new node(-inf);
root->size = ;
}
void rotate(node *&t, int d)
{
node *k = t->ch[d ^ ];
t->ch[d ^ ] = k->ch[d];
k->ch[d] = t;
t->pull_up();
k->pull_up();
t = k;
}
void splay(int k, node *&t = root)
{
int d1 = t->cmp(k);
if(d1 == )
k = k - t->ch[]->size - ;
if(d1 != -)
{
int d2 = t->ch[d1]->cmp(k);
if(d2 != -)
{
int k2 = (d2 == ) ? (k - t->ch[d1]->ch[]->size - ) : k;
splay(k2, t->ch[d1]->ch[d2]);
if(d1 != d2)
{
rotate(t->ch[d1], d2 ^ );
rotate(t, d1 ^ );
}
else
{
rotate(t, d1 ^ );
rotate(t, d2 ^ );
}
}
else
rotate(t, d1 ^ );
}
}
void insert(int val)
{
splay(root->size - );
node *k = root->ch[];
root->ch[] = new node(val);
root->ch[]->ch[] = k;
k->pull_up();
root->ch[]->pull_up();
root->pull_up();
}
int get_maxnum(int len)
{
int from = root->size - len;
int to = from + len - ;
splay(to + , root);
splay(from - , root->ch[]);
return root->ch[]->ch[]->maxnum;
}
}
int main()
{
using namespace splay;
cin >> m >> d;
init();
char a;
int b;
while(m--)
{
cin >> a >> b;
switch(a)
{
case 'A':
insert((b + t) % d);
break;
case 'Q':
t = get_maxnum(b);
cout << t << endl;
break;
}
}
return ;
}
线段树解法
M<=2e5,也就是极限状况下最多2e5个数。开个长度是2e5的线段树,再记录下已经加了N个数了。每次插入就是更改第N+1个元素,查询就是查询区间[N-L+1,N]的最大值。
懒得重写一遍了……
【JSOI2008】最大数的更多相关文章
- BZOJ1012: [JSOI2008]最大数maxnumber [线段树 | 单调栈+二分]
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 8748 Solved: 3835[Submi ...
- BZOJ-1012[JSOI2008]最大数maxnumber 线段树区间最值
这道题相对简单下面是题目: 1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Submit: 6542 Solve ...
- 洛谷P1198 [JSOI2008]最大数
P1198 [JSOI2008]最大数 267通过 1.2K提交 题目提供者该用户不存在 标签线段树各省省选 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 WA80的戳这QwQ BZOJ都 ...
- 【bzoj1012】[JSOI2008]最大数maxnumber
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 8339 Solved: 3624[Submi ...
- Cogs 1844. [JSOI2008]最大数maxnumber
[JSOI2008]最大数maxnumber ★★ 输入文件:bzoj_1012.in 输出文件:bzoj_1012.out 简单对比 时间限制:3 s 内存限制:162 MB [题目描述] 现在请求 ...
- BZOJ 1012: [JSOI2008]最大数maxnumber【线段树单点更新求最值,单调队列,多解】
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 10374 Solved: 4535[Subm ...
- [JSOI2008]最大数maxnumber
[JSOI2008]最大数maxnumber 标签: 线段树 单独队列 题目链接 题解 线段树裸题. 如果一直RE可能是你用的cin/cout. Code #include<cstdio> ...
- bzoj 1012: [JSOI2008]最大数maxnumber (线段树)
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 13081 Solved: 5654[Subm ...
- 洛谷 P1198 [JSOI2008]最大数
洛谷 P1198 [JSOI2008]最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. ...
- BZOJ 1012: [JSOI2008]最大数maxnumber 单调队列/线段树/树状数组/乱搞
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 4750 Solved: 2145[Submi ...
随机推荐
- TIDB技术文档翻译
http://blog.csdn.net/antony9118/article/details/60470115
- spring boot 自己输出json数据
@RequestMapping("/json")public void json(HttpServletResponse response, Pager pager, TruckF ...
- Java反射机制能够获取的信息,与应用
一.什么是Java反射机制? [1]反射机制是在运行状态中,对于任何一个类,都能够知道这个类的所有属性和方法: [2]对于任意一个对象,都能够调用它的任意一个属性和方法: 像这种动态获取类的信息以及动 ...
- Sudoku Killer
Problem Description 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行 ...
- 349B - Color the Fence
Color the Fence Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Su ...
- java Callable创建线程
package com.java.concurrent; import java.util.concurrent.Callable; import java.util.concurrent.Execu ...
- Python pip 下载速度慢? Windows 设置 国内源,用 阿里云 国内镜像 加速
pip 提供了对 Python 包的查找.下载.安装.卸载的功能,是非常方便的 Python 包管理工具.但是,令人苦恼的是 pip 在国内的下载速度非常慢,速度常常只有每秒几十 K,甚至才几 K,小 ...
- Tomcat初应用
Tomcat初应用 这里我们自己建立一个html的web资源,然后在tomcat里进行配置,使我们可以通过服务器在浏览器里打开. 第一步:新建html文件,在里面随便输入几个字符串如:新建txt文件- ...
- :after伪类+content内容生成
:after伪类+content 清除浮动的影响 浮动元素会让此div的高度塌陷.如下例子: .box{padding:10px; background:gray;} .l{float:left;} ...
- c#中将IP地址转换成无符号整形数的方法与逆变换方法
我们知道 IP地址就是给每个连接在Internet上的主机分配的一个32bit地址. 按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节.而c#中 ...