洛谷P1198 [JSOI2008]最大数
来源:互联网 发布:linux 更改umask 编辑:程序博客网 时间:2024/06/05 10:52
题目描述
现在请求你维护一个数列,要求提供以下两种操作:
1、 查询操作。
语法:Q L
功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。
限制:L不超过当前数列的长度。
2、 插入操作。
语法:A n
功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾。
限制:n是整数(可能为负数)并且在长整范围内。
注意:初始时数列是空的,没有一个数。
输入输出格式
输入格式:第一行两个整数,M和D,其中M表示操作的个数(M <= 200,000),D如上文中所述,满足(0<D<2,000,000,000)
接下来的M行,每行一个字符串,描述一个具体的操作。语法如上文所述。
输出格式:对于每一个查询操作,你应该按照顺序依次输出结果,每个结果占一行。
输入输出样例
输入样例#1:
5 100A 96Q 1A 97Q 1Q 2
输出样例#1:
969396
说明
[JSOI2008]
RMQ问题,跑了一发线段树。。。
#include<iostream>#include<algorithm>#include<stdio.h>#define LSON rt<<1#define RSON rt<<1|1#define max(a,b) a>b?a:b#define MAXN 200005using namespace std;int m,d;long long t=0,a[MAXN<<2];inline long long read(){ long long date=0,w=1;char c=0; while(c!='-'&&(c<'0'||c>'9'))c=getchar(); if(c=='-'){w=-1;c=getchar();} while(c>='0'&&c<='9'){date=date*10+c-'0';c=getchar();} return date*w;}void pushup(int rt){ a[rt]=max(a[LSON],a[RSON]);}void update(int l,int r,int rt,int x,long long y){ int mid; if(l==r){ a[rt]=y; return; } mid=l+r>>1; if(x<=mid)update(l,mid,LSON,x,y); else update(mid+1,r,RSON,x,y); pushup(rt);}long long query(int l,int r,int rt,int x,int y){ int mid; long long ans=-2147483647; if(x<=l&&y>=r) return a[rt]; mid=l+r>>1; if(x<=mid)ans=max(ans,query(l,mid,LSON,x,y)); if(mid<y)ans=max(ans,query(mid+1,r,RSON,x,y)); return ans;}int main(){ int x,s=0; char c[2]; m=read();d=read(); for(int i=1;i<=m;i++){ scanf("%s",c); if(c[0]=='A'){ x=read(); s++; x=(x+t)%d; update(1,m,1,s,x); } if(c[0]=='Q'){ x=read(); t=query(1,m,1,s-x+1,s); printf("%lld\n",t); } } return 0;}
阅读全文
0 0
- 洛谷 P1198 [JSOI2008]最大数
- [JSOI2008]最大数 洛谷p1198
- 洛谷P1198 JSOI2008最大数
- 洛谷P1198 [JSOI2008]最大数
- 洛谷 P1198 [JSOI2008]最大数
- P1198 [JSOI2008]最大数
- 洛谷 P1198 BZOJ 1012 [JSOI2008] 最大数
- 洛谷P1198 [JSOI2008]最大数(线段树)
- 洛谷 P1198 最大数
- 洛谷p1198最大数
- 洛谷 [P1198] 最大数
- [P1198]最大数
- 洛谷:JSOI2008 最大数
- 【JSOI2008】最大数
- [JSOI2008]最大数maxnumber
- jsoi2008最大数bzoj1012
- [JSOI2008]最大数
- [JSOI2008]最大数maxnumber
- Mysql分区表使用的一些限制和需要注意的地方
- 「NOIP2012」国王游戏
- 工业相机常用术语
- 最大流
- 傅里叶变换概念及公式推导
- 洛谷P1198 [JSOI2008]最大数
- Android AIDL基础用法
- 转--ISE中Xilinx全局时钟系统的设计
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)
- 一些简单的webstorm的设置 模板
- ARC 077
- 九九乘法表及杨辉三角C语言实现
- NOIP 2002 普及组 数字游戏
- 【HDU】3359