Luogu P1198 [JSOI2008]最大数
我会用高级(???)的单调栈来打这道题吗?
线段树即可水过。
假设这个数列刚开始所有数都是0,然后我们每次只要进行一个点的修改和区间求和即可。
这不就是 线段树大法。
只要用一个len记录一下当前数列长度即可
(刚开始智障把求最大数打成求和了,还过样例了)
CODE
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long LL;
const int N=,INF=;
LL tree[N*+],n,d,x,last,len;
char ch;
inline void read(LL &x)
{
x=; char ch=getchar(); int flag=;
while (ch<''||ch>'') { if (ch=='-') flag=-; ch=getchar(); }
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
x*=flag;
}
inline void write(LL x)
{
if (x<) putchar('-'),x=-x;
if (x/) write(x/);
putchar(x%+'');
}
inline LL max(LL a,LL b) { return a>b?a:b; }
inline void updata(LL root,LL l,LL r,LL id,LL add)
{
if (l==r)
{
if (l==id)
{
tree[root]=add;
return;
}
}
LL mid=l+r>>;
if (id<=mid) updata(root*,l,mid,id,add); else updata(root*+,mid+,r,id,add);
tree[root]=max(tree[root*],tree[root*+]);
}
inline LL query(LL root,LL l,LL r,LL ql,LL qr)
{
if (l>=ql&&r<=qr) return tree[root];
LL res=-INF,mid=l+r>>;
if (ql<=mid) res=max(res,query(root*,l,mid,ql,qr));
if (mid<qr) res=max(res,query(root*+,mid+,r,ql,qr));
return res;
}
int main()
{
read(n); read(d);
while (n--)
{
cin>>ch;
if (ch=='A')
{
read(x);
x+=last;
x%=d;
updata(,,N,++len,x);
} else
{
read(x);
last=query(,,N,len-x+,len);
write(last);
putchar('\n');
}
}
return ;
}
Luogu P1198 [JSOI2008]最大数的更多相关文章
- Luogu P1198 [JSOI2008]最大数 单调队列/ST表
开一个单调队列,下标递增,值递减. 然后在上面二分最大数. 如果加上并查集可以做到接近线性. 还有一种是插入一个数然后,从后向前更新ST表. #include<cstdio> #inclu ...
- 洛谷P1198 [JSOI2008]最大数
P1198 [JSOI2008]最大数 267通过 1.2K提交 题目提供者该用户不存在 标签线段树各省省选 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 WA80的戳这QwQ BZOJ都 ...
- 洛谷 P1198 [JSOI2008]最大数
洛谷 P1198 [JSOI2008]最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. ...
- P1198 [JSOI2008]最大数(单调栈)
P1198 [JSOI2008]最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制: ...
- P1198 [JSOI2008]最大数(线段树)
P1198 [JSOI2008]最大数(线段树) 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值 ...
- 洛谷P1198 [JSOI2008]最大数(单点修改,区间查询)
洛谷P1198 [JSOI2008]最大数 简单的线段树单点问题. 问题:读入A和Q时,按照读入一个字符会MLE,换成读入字符串就可以了. #include<bits/stdc++.h> ...
- P1198 [JSOI2008]最大数(线段树基础)
P1198 [JSOI2008]最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制: ...
- 「线段树」「单点修改」洛谷P1198 [JSOI2008]最大数
「线段树」「单点修改」洛谷P1198 [JSOI2008]最大数 题面描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数, ...
- 洛谷P1198 [JSOI2008]最大数(BZOJ.1012 )
To 洛谷.1198 最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制:L不超过当 ...
随机推荐
- sublime中如何用less实现css预编译
实现css预编译的方式有很多,听说glup很流行而且功能也很强大,但是就目前的工作而言,仅要css预编译和YUIcompress就够了,接下来切入正题 Less 是一门 CSS 预处理语言,它扩展了 ...
- CSS实现DIV从隐藏到展示的过渡效果
CSS中有很多功能强大的方法,其中过渡属性transition就很牛叉.你不用写一行JavaScript代码,随便写点css就可以实现一个动画效果.下面结合我在W3C网站上看到的实例,举个栗子说明下( ...
- 数据结构入门之链表(C语言实现)
这篇文章主要是根据<数据结构与算法分析--C语言描述>一书的链表章节内容所写,该书作者给出了链表ADT的一些方法,但是并没有给出所有方法的实现.在学习的过程中将练习的代码记录在文章中,并添 ...
- Prometheus Node_exporter 之 Disk Datail /proc/diskstats
Disk Datail /proc/diskstats 1. Disk IOps Completed type: GraphUnit: I/O ops/sec(iops)Label: IO read( ...
- Centos/Linux下调整分区大小(以home和根分区为例)
转载于 https://blog.csdn.net/qq_33233768/article/details/65437609 在安装新系统的时候,有时候没法预估或者说错误的划分了分区大小,常常会 ...
- arrayfun用法(转)
http://blog.sina.com.cn/s/blog_7cf4f4460101bnhh.html 利用arrayfun函数可以避免无谓的循环,从而大大提高代码的简介性.1.A=ARRAYFUN ...
- Windows API串口编程详解
(一)Windows API串口通信编程概述 Windows环境下的串口编程与DOS环境下的串口编程有很大不同.Windows环境下的编程的最大特征之一就是设备无关性,它通过设备驱动程序将Window ...
- python class根据配置自定义函数
今天看到了一种有趣的定义函数的方式: class Test(object): def define_get_methods(cls, method_name, path): def inner_get ...
- ArcGIS js api 手动构建FeatureLayer
坐标系 var spatialReference = new SpatialReference(4326);1要素坐标点 var pointArr = [ new Point(116.94431351 ...
- redis性能测试工具的使用
在redis安装完成后会生成一个bin的目录,在这个目录中有一个 redis-benchmark 的文件脚本工具,通过执行这个工具进行redis的性能测试. bash #执行这个脚本后脚本会自动运行r ...