P1988 最大数
2024-08-28 21:08:54
最大数
08年江苏的一道省选题。
题目描述:
用两种操作维护一个数列:
1、 查询:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。
2、 插入:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾。
这道题的解决方法有不少,例如单调栈,单调队列,线段树之类的。
由于把这道题当作单调栈的练习来做的,所以就只用了单调栈。别的方法可以参考一下黄学长的博客。
思路:
不断的维护一个单调递减的栈,每次输出后面要求输出的第n位就好了。
代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,b,sum[],dis[],top,x,num;
char a[];
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i){
scanf("%s%d",a,&b);
if(a[]=='A'){
b=(b+x)%m;
sum[++num]=b;
while(top&&sum[dis[top]]<=b)
top--;
dis[++top]=num;
}
else{
int y=lower_bound(dis+,dis+top+,num-b+)-dis;
x=sum[dis[y]];
printf("%d\n",x);
}
}
return ;
}
最新文章
- jQuery事件总结
- KVC、KVO、NSNotification、delegate 总结及区别
- url地址中 ";&;"; ";/";等符号的转义处理(转)
- sql join 优化
- Android中RelativeLayout各个属性的含义
- C#基础回顾以及if语句
- mysql中的substr()函数
- Memcached操作
- centos 批量杀死进程
- 8:String类
- 结对项目gobang
- Windows10 安装Jupyter
- Vue2.0 less全局配置
- vs2005 sp1 补丁的安装问题
- Redis5.0:在这些场景使用,高效率还低成本!
- android:Layout_weight的深刻理解
- MySQL 清理slowlog方法
- Mac Angular打包报错xcode-select: error: tool &#39;xcodebuild&#39; requires Xcode
- 软件开发中对MVC的一些理解
- gulp前端自动化构建工具
热门文章
- 获取元素Bytagname区别/for循环应用
- 【TensorFlow入门完全指南】神经网络篇&#183;循环神经网络(RNN)
- 使用ABAP批量下载有道云笔记中的图片
- 关于一些Spring MVC控制器的参数注解总结
- 在Linux下安装redis
- 作业题:输出单个字符 输入单个字符 scanf printf
- 【MySQL】mac环境下使用navicat premium连接mysql乱码问题
- Scrapy+Chromium+代理+selenium
- ASP( VBScript ) 解析 JSON
- poj 3262 牛毁坏花问题 贪心算法