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

用的是并查集,然后用了路径压缩。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 #include<cstring>
 5 #include<string>
 6 #include<fstream>
 7 using namespace std;
 8 //ifstream cin("cin.in");ofstream fout("test.out");
 9
10 long long m,mod,f[200005],d[200005],t=0,size=0;
11
12 int cind(int x){
13     if(x==f[x]) return x;
14     int fx=cind(f[x]);
15     if(d[x]<d[f[x]]) d[x]=d[f[x]];  //小心观看
16     f[x]=fx;
17     return fx;
18     }
19
20 void Q(int x){
21      int z=size-x+1;
22      cind(z);
23      t=d[z];
24      cout<<d[z]<<endl;
25      }
26
27 int main()
28 {
29     cin>>m>>mod;
30     char s;int n;
31     for(int i=1;i<=m;++i)
32     {
33       cin>>s>>n;
34       if(s=='Q') Q(n);
35       else {size++;f[size-1]=size;f[size]=size;d[size]=(t+n)%mod;}
36             }
37    // system("pause");
38     return 0;
39
40     } 

转载于:https://www.cnblogs.com/noip/archive/2013/03/19/2969865.html

[JSOI2008]最大数maxnumber相关推荐

  1. 1012: [JSOI2008]最大数maxnumber

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

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

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

  3. BZOJ 1012: [JSOI2008]最大数maxnumber 单调队列/线段树/树状数组/乱搞

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

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

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

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

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

  6. BZOJ 1012 [JSOI2008]最大数maxnumber

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

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

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

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

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

  9. 【听说是线段树】bzoj1012 [JSOI2008]最大数maxnumber

    一眼看题目吓了一跳:这TM不就是单调队列吗,200000又怎样,大不了我二分嘛 系统提示:成功开启 手残模式 开始瞎写: 1 #include <cstdio> 2 long long a ...

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

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

最新文章

  1. IDEA加密文件Base64转换String传输以及报文摘要MD5防止恶意篡改
  2. LED音乐频谱之输出数据处理
  3. java mysql 删除 博客园_mysql的增删改查
  4. php加载外部html,VUE页面加载外部HTML实例详解
  5. 稀疏表示介绍(中)、(下)
  6. Spring boot的场景启动器
  7. java和tornado_TornadoJ
  8. c语言调用createthread线程的头文件_易语言API多线程总汇
  9. werkzeug response
  10. java 限制文件大小_java上传文件大小限制
  11. 远距离WiFi模块图传,无线wifi技术方案,CV5200无线传输应用
  12. C++ gflags
  13. Detecting Spacecraft Anomalies Using LSTMs and Nonparametric Dynamic Thresholding
  14. 蓝桥杯——单片机学习(3——点亮LED灯)
  15. 首批 RISC-V 手机要来了,你准备好了吗?
  16. jqGrid参数整理
  17. 在window下查看占用tomcat进程,杀死进程并启用tomcat
  18. 为将来而记下的过去——扭曲的爱,病态的教育
  19. python人工智能项目实战 桑塔努·帕塔纳亚克 pdf_(特价书)Python人工智能项目实战...
  20. pandownload内部测试版

热门文章

  1. [leetcode]240. 搜索二维矩阵 II
  2. Unity3D基础10:利用Transform组件移动物体
  3. bzoj 4260: Codechef REBXOR(01字典树)
  4. opencv 学习第二课 摄像头、外部视频读取、处理、显示、写入 代码注释版 保证你每一行都能读懂
  5. DFS(深度优先算法)难
  6. vscode 使用技巧(持续更新)
  7. c#软件操作-cmd命令全解
  8. LaTex建立参考文献链接
  9. windows 安装jenkins
  10. vuex state使用