最大数

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 ;
}

最新文章

  1. jQuery事件总结
  2. KVC、KVO、NSNotification、delegate 总结及区别
  3. url地址中 &quot;&amp;&quot; &quot;/&quot;等符号的转义处理(转)
  4. sql join 优化
  5. Android中RelativeLayout各个属性的含义
  6. C#基础回顾以及if语句
  7. mysql中的substr()函数
  8. Memcached操作
  9. centos 批量杀死进程
  10. 8:String类
  11. 结对项目gobang
  12. Windows10 安装Jupyter
  13. Vue2.0 less全局配置
  14. vs2005 sp1 补丁的安装问题
  15. Redis5.0:在这些场景使用,高效率还低成本!
  16. android:Layout_weight的深刻理解
  17. MySQL 清理slowlog方法
  18. Mac Angular打包报错xcode-select: error: tool &#39;xcodebuild&#39; requires Xcode
  19. 软件开发中对MVC的一些理解
  20. gulp前端自动化构建工具

热门文章

  1. 获取元素Bytagname区别/for循环应用
  2. 【TensorFlow入门完全指南】神经网络篇&#183;循环神经网络(RNN)
  3. 使用ABAP批量下载有道云笔记中的图片
  4. 关于一些Spring MVC控制器的参数注解总结
  5. 在Linux下安装redis
  6. 作业题:输出单个字符 输入单个字符 scanf printf
  7. 【MySQL】mac环境下使用navicat premium连接mysql乱码问题
  8. Scrapy+Chromium+代理+selenium
  9. ASP( VBScript ) 解析 JSON
  10. poj 3262 牛毁坏花问题 贪心算法