博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最大数maxnumber bzoj1012 JSOI2008 单调队列
阅读量:5895 次
发布时间:2019-06-19

本文共 964 字,大约阅读时间需要 3 分钟。

现在请求你维护一个数列,要求提供以下两种操作:

1、 查询操作。 语法:Q L

功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。

限制:L不超过当前数列的长度。

2、 插入操作。

语法:A n

功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾。

限制:n是非负整数并且在长整范围内。

注意:初始时数列是空的,没有一个数。

 单调队列的模版题,摸鱼过题,直接上代码了

#include
#include
#include
#include
#include
using namespace std;template
inline void read(T &_a){ bool f=0;int _ch=getchar();_a=0; while(_ch<'0' || _ch>'9'){ if(_ch=='-')f=1;_ch=getchar();} while(_ch>='0' && _ch<='9'){_a=(_a<<1)+(_a<<3)+_ch-'0';_ch=getchar();} if(f)_a=-_a;}int M,D,n,q[200001],r,t,loc[200001],cnt;char op;int main(){ read(M); read(D); while(M--) { op=getchar(); read(n); if(op=='A') { n+=t; n%=D; while(n>q[r]&&r) --r; q[++r]=n; loc[r]=++cnt; } else { int k=r; while(loc[k-1]+n>cnt&&k>1) --k; printf("%d\n",q[k]); t=q[k]; } } return 0;}

 

转载于:https://www.cnblogs.com/jaywang/p/7754941.html

你可能感兴趣的文章
PIX防火墙基本特性:失效处理机制和冗余-原理与实验
查看>>
域环境内部署Bginfo来统计用户计算机信息
查看>>
nagios短信报警(飞信fetion20080522004-linrh4)
查看>>
【Android游戏开发之六】在SurfaceView中添加组件!!!!并且相互交互数据!!!!...
查看>>
创建实体类使用Hibernate
查看>>
异常处理汇总-开发工具
查看>>
[LeetCode] Excel Sheet Column Number 求Excel表列序号
查看>>
通过浏览器直接打开Android应用程序
查看>>
MVC调用SVC无法找到资源解决问题
查看>>
div加jquery实现iframe标签的功能
查看>>
解决Yapi 插件运行不支持文件上传的问题解决
查看>>
Windows路由表详解
查看>>
MySQL从库记录binlog日志出错一例
查看>>
2015年度扯淡
查看>>
phpcms2008列表页模板与内容页模板list.html show.html
查看>>
Java程序员从笨鸟到菜鸟之(八十四)深入浅出Ajax
查看>>
GNS3全面详解系列-GNS3的前世今生
查看>>
centos7安装图形化界面
查看>>
DPM2012学习(六),工作组和不受信任域计算机安装DPM代理
查看>>
linux sar 命令详解
查看>>