1012: [JSOI2008]最大数maxnumber

Time Limit: 3 Sec  Memory Limit: 162 MB
Submit: 4750  Solved: 2145
[Submit][Status][Discuss]

Description

现 在请求你维护一个数列,要求提供以下两种操作: 1、 查询操作。语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。限制:L不超过当前数列的长度。 2、 插入操作。语法:A n 功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的 末尾。限制:n是非负整数并且在长整范围内。注意:初始时数列是空的,没有一个数。

Input

第一行两个整数,M和D,其中M表示操作的个数(M <= 200,000),D如上文中所述,满足(0

Output

对于每一个查询操作,你应该按照顺序依次输出结果,每个结果占一行。

Sample Input

5 100
A 96
Q 1
A 97
Q 1
Q 2

Sample Output

96
93
96

HINT

题解:

这道题就是裸的rmq题目,我推荐一种单调队列的搞法!

搞搞搞,看代码就知道肿么做啦~

//qscqesze
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define maxn 250001
#define eps 1e-9
const int inf=0x7fffffff;   //无限大
//**************************************************************************************
int a[maxn],max_num[maxn],t=0,ans=0;
int main()
{int n,d;scanf("%d%d",&n,&d);char ch[3];int g;while(n--){scanf("%s%d",ch,&g);if(ch[0]=='A'){a[++t]=(ans+g)%d;for(int i=t;i;i--){if(max_num[i]<a[t])max_num[i]=a[t];elsebreak;}}else{ans=max_num[t-g+1];printf("%d\n",ans);}}return 0;
}

转载于:https://www.cnblogs.com/qscqesze/p/4349230.html

BZOJ 1012: [JSOI2008]最大数maxnumber 单调队列/线段树/树状数组/乱搞相关推荐

  1. BZOJ 1012: [JSOI2008]最大数maxnumber(线段树)

    裸的线段树...因为数组开小了而一直RE..浪费了好多时间.. -------------------------------------------------------------------- ...

  2. BZOJ 1012 [JSOI2008]最大数maxnumber

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MB Submit: 5425  Solved: 2397 [Sub ...

  3. BZOJ 1012: [JSOI2008]最大数maxnumber

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MB Submit: 11358  Solved: 4978 [Su ...

  4. bzoj1012: [JSOI2008]最大数maxnumber [单调队列]

    Description 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L 个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2. ...

  5. 1012: [JSOI2008]最大数maxnumber

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MB Submit: 10711  Solved: 4683 [Su ...

  6. 【BZOJ】1012: [JSOI2008]最大数maxnumber 树状数组求区间最值

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1012 题意:维护一个数列,开始时没有数值,之后会有两种操作, Q L :查询数列末 ...

  7. 1012: [JSOI2008]最大数maxnumber 线段树

    https://www.lydsy.com/JudgeOnline/problem.php?id=1012 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数 ...

  8. 【BZOJ 1012】[JSOI2008]最大数maxnumber

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Description 现在请求你维护一个数列,要求提供以下两种 ...

  9. BZOJ-1012[JSOI2008]最大数maxnumber 线段树区间最值

    这道题相对简单下面是题目: 1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Submit: 6542 Solve ...

最新文章

  1. Error: could not find function ... in R
  2. [转]安装和使用JD-Eclipse插件
  3. 如何解决Office2016安装时提示:错误1406。安装程序无法将值写入注册表项\.xlsx
  4. MYSQL中 ENUM 类型
  5. 学java教程之this关键字
  6. 机器学习如何计算特征的重要性_干货 :机器学习中的特征工程总结
  7. MySQL入门-3:安装与客户端工具
  8. 最长配对(51Nod-2494)
  9. 支付宝当前最新版集成2.1.2版本
  10. ApacheCN DevOps 译文集 20211227 更新
  11. 伴生对象-apply方法
  12. 打开与关闭Linux防火墙
  13. Pannellum:实例之自定义热点信息
  14. android drawable-hdpi 分辨率,android – 设置可用于不同分辨率的drawable文件夹
  15. 电子教室软件 android,超越电子教室
  16. java基本数据类型范围
  17. 2020年全球及中国电源管理芯片(PMIC)行业发展现状及市场竞争格局分析,全球市场集中,德州仪器市占第一「图」
  18. 服务器怎么多开虚拟机,服务器多开虚拟机操作系统
  19. OpenWRT设置ADGuardHome+小喵咪
  20. 佩服的一个阿里 P9 大佬,离职了...

热门文章

  1. Vim取消查找后的高亮提示,:nohl或者:noh什么的都不管用,来一个简单粗暴方法
  2. 通信系统设计与python的书_腾讯十年Python开发老司机推荐的入门书籍,你确定不看吗?...
  3. 求两数最大公约数,最小公倍数-Java
  4. 1.2.1 计算机系统的组成(硬件+软件)
  5. C#语法:正则表达式 --Trim()的实现
  6. 算法练习day16——190404(KMP算法)
  7. mysql倍增表的内容,mysql - DATEDIFF不会在触发器内倍增 - SO中文参考 - www.soinside.com...
  8. Cpp 对象模型探索 / 不能被继承的类
  9. TCP/IP / 状态转换图
  10. 数据结构与算法 / 哈希算法