1012: [JSOI2008]最大数maxnumber

来源:互联网 发布:海岛奇兵能量神像数据 编辑:程序博客网 时间:2024/05/18 03:09

Description

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

Input

  第一行两个整数,M和D,其中M表示操作的个数(M <= 200,000),D如上文中所述,满足D在longint内。接下来
M行,查询操作或者插入操作。

Output

  对于每一个询问操作,输出一行。该行只有一个数,即序列中最后L个数的最大数。

Sample Input

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

Sample Output

96
93
96

HINT

  数据如下http://pan.baidu.com/s/1i4JxCH3


就是最基础的线段树。今日一做理解了之前的很多不明白的细节

代码如下:

#include<iostream>#include<stdio.h>#define inf 0x7fffffffusing namespace std;int m,mod,cnt,last;struct node{    int l,r,mx;}t[800005];void build(int id,int l,int r){    t[id].l=l;t[id].r=r;t[id].mx=-inf;    if(l==r)        return ;    int mid=(l+r)/2;    build(id*2,l,mid);    build(id*2+1,mid+1,r);}int ask(int id,int x,int y){    int l=t[id].l;int r=t[id].r;    if(l==x&&r==y)        return t[id].mx;    int mid=(l+r)/2;    if(y<=mid)        return ask(id*2,x,y);    else if(x>=mid)        return ask(id*2+1,x,y);    else        return max(ask(id*2,x,mid),ask(id*2+1,mid+1,y));}void insert(int id,int x,int y)//id表示从第几个开始找。x表示要插入的位置。y表示要插入的数{    int l=t[id].l;int r=t[id].r;    if(l==r)    {        t[id].mx=y;        return;    }    int mid=(l+r)/2;    if(x<=mid)        insert(id*2,x,y);    else        insert(id*2+1,x,y);    t[id].mx=max(t[id*2].mx,t[id*2+1].mx);}int main(){    scanf("%d%d",&m,&mod);    char xx;    int x;     build(1,1,m);    for(int i=1;i<=m;i++)    {       cin>>xx;        if(xx=='A')        {           cnt++;//因为有一个A就说明有一个数字插入到队列当中去了,所以要加一,记录队列中的数字个数           scanf("%d",&x);           x=(x+last)%mod;           insert(1,cnt,x);        }        else        {            scanf("%d",&x);            last=ask(1,cnt-x+1,cnt);           printf("%d\n",last);        }    }    return 0;}


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 中建七局薪酬标准2018 职工薪酬包括哪些内容 职工薪酬会计分录 天职国际薪酬表 湖南自考薪酬管理 薪酬福利管理 薪酬管理的原则 薪酬管理论文 薪酬管理名词解释 上市公司员工薪酬标准 2018京东员工级别和薪酬表一览 恒大地产2018年薪酬等级表 总经理助理一般什么薪酬水平 京东员工级别和薪酬2018 材料学就业前景及薪酬 薪金卡 信诚薪金宝 遇女薪金 薪金卡好还是储蓄卡好 平安普惠薪金贷 薪金卡和普通银行卡的区别 薪金贷app下载 工资薪金税前扣除标准 薮猫价格 薯塔 旋转薯塔 薯塔的做法 薯塔培训班 薯塔配方 薯塔学习 旋风薯塔 旋转薯塔机 薯塔机 黄金薯塔机 薯塔图片 薯塔技术 炸薯塔 薯塔脆浆粉的配方 香薯 粉薯