【题目描述】

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

【输入格式】

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

【输出格式】

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

【样例输入】

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

【样例输出】

96
93
96
/*
线段树维护最大值
注意这里的n可以为查询次数,因为n最大为查询次数
*/
#include<cstdio>
#include<iostream>
#define M 200010
#define lson l,m,now*2
#define rson m+1,r,now*2+1
#define LL long long
using namespace std;
LL mx[M*],mod,t=,n;
LL read()
{
char c=getchar();LL num=,flag=;
while(c<''||c>''){if(c=='-')flag=-;c=getchar();}
while(c>=''&&c<=''){num=num*+c-'';c=getchar();}
return num*flag;
}
void push_up(int now)
{
mx[now]=max(mx[now*],mx[now*+]);
}
void insert(LL v,LL pos,LL l,LL r,LL now)
{
if(l==r)
{
mx[now]=v;
return;
}
LL m=(l+r)/;
if(pos<=m)insert(v,pos,lson);
else insert(v,pos,rson);
push_up(now);
}
LL query(LL x,LL y,LL l,LL r,LL now)
{
if(l>=x&&r<=y)return mx[now];
LL m=(l+r)/;
LL ans=;
if(m>=x)ans=max(ans,query(x,y,lson));
if(m<y)ans=max(ans,query(x,y,rson));
return ans;
}
int main()
{
freopen("bzoj_1012.in","r",stdin);
freopen("bzoj_1012.out","w",stdout);
LL T=read(),p=;mod=read();n=T;
while(T--)
{
char c;cin>>c;
LL x=read();
if(c=='Q')
{
LL ans=query(p-x+,p,,n,);
cout<<ans<<endl;
t=ans;
}
else
{
p++;
insert((x+t)%mod,p,,n,);
}
}
return ;
}

最大数(cogs 1844)的更多相关文章

  1. Cogs 1844. [JSOI2008]最大数maxnumber

    [JSOI2008]最大数maxnumber ★★ 输入文件:bzoj_1012.in 输出文件:bzoj_1012.out 简单对比 时间限制:3 s 内存限制:162 MB [题目描述] 现在请求 ...

  2. [Cogs] 最大数maxnumber

    http://cogs.pro:8080/cogs/problem/problem.php?pid=1844 Luogu 的数据真zhizhang Cogs AC #include <iostr ...

  3. BZOJ1012: [JSOI2008]最大数maxnumber [线段树 | 单调栈+二分]

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 8748  Solved: 3835[Submi ...

  4. nyoj 448 寻找最大数(贪心专题)

    寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...

  5. javascript基础程序(算出一个数的平方值、算出一个数的阶乘、输出!- !- !- !- !- -! -! -! -! -! 、函数三个数中的最大数)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. AC日记——找最大数序列 openjudge 1.9 10

    10:找最大数序列 总时间限制:  1000ms 内存限制:  65536kB 描述 输入n行,每行不超过100个无符号整数,无符号数不超过4位.请输出最大整数以及最大整数所在的行号(行号从1开始). ...

  7. 【COGS 254】【POI 2001】交通网络图

    http://www.cogs.top/cogs/problem/problem.php?pid=254 dist[i]表示能最早到达i点的时间.这样就可以用最短路模型来转移了. #include&l ...

  8. BZOJ1012 [JSOI2008]最大数maxnumber

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  9. ACM 寻找最大数

    寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...

随机推荐

  1. 在input标签里只能输入数字

    <input type='text' onkeyup="(this.v=function(){this.value=this.value.replace(/[^0-9-]+/,''); ...

  2. webfrom ASP开发基础跟模式

    ASP.NET - .net开发网站应用程序的技术总称 ASP WebForm           MVC   是ASP.NET的两个技术方法 WebForm类似于WinForm,可视化操作 MVC类 ...

  3. 修改他人电脑的Windows登录密码

    在别人电脑已登录Windows的情况下: 打开控制面板 -> 管理工具 -> 计算机管理   或者  对Win图标单击右键 -> 计算机管理 -> 本地用户和组 -> 用 ...

  4. 2018.7.21NOIP模拟赛?解题报告

    题面 预计得分:70 + 60 + 30 = 160 实际得分:40 + 60 + 0 = 100 T1数组开小了 T2比赛结束后5min AC T3加了个记忆话搜索wa了.. T1 zbq吊打std ...

  5. canvas基础绘制-倒计时(下)

    digit_1.js: digit = [ [ [0,0,1,1,1,0,0], [0,1,1,0,1,1,0], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0 ...

  6. android java 知识点

    ublic,protected,friendly,private的访问权限如下: 关键字        当前类       同一package        子孙类       其他package p ...

  7. Selenium私房菜系列--总章

    前言 在这段期间,我一直在找关于服务器的端测试方案,自动化工具等等,无意间我发现了Selenium这个工具.在试用一段时间后,觉得Selenium确实是一个很不错的Web测试工具.在和强大的QTP比较 ...

  8. php bz2扩展安装

    php bz2扩展安装 2017年09月22日 14:14:36 Cookie_1030 阅读数:1781   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn ...

  9. windows安装tensorflow的一个教训

    今天没什么课,然后就准备安装tensorflow. 看了一下教程,就去做了. 然后就犯了错误.网上的教程还是有一些差异的,而我又比较大意,没有很注意到CUDA,cudnn的版本要求,也过于高估自己cp ...

  10. while循环(break、continue)

    while循环 流程:判断条件是否为真,如果条件为真,执行代码块,然后再次判断条件是否为真,如果为真,执行代码块,直到条件判断为假,结束循环 格式 while  条件: 代码块(循环体) else:- ...