1. [JSOI2008]最大数maxnumber

    ★★ 输入文件:bzoj_1012.in 输出文件:bzoj_1012.out 简单对比

    时间限制:3 s 内存限制:162 MB

    【题目描述】

    现在请求你维护一个数列,要求提供以下两种操作: 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

    【题目来源】

    耒阳大视野(衡阳八中) OJ 1012
  1. /*
  2. 区间修改+求区间max.
  3. */
  4. #include<iostream>
  5. #include<cmath>
  6. #include<cstdio>
  7. #define LL long long
  8. #define MAXN 200001
  9. using namespace std;
  10. LL n,m,cut,mod;
  11. struct data{
  12. LL l,r,lc,rc,sum,bj;
  13. }tree[MAXN*4];
  14. LL read(){
  15. LL x=0,f=1;char ch=getchar();
  16. while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
  17. while(ch>='0'&&ch<='9')x=x*10+ch-48,ch=getchar();
  18. return x*f;
  19. }
  20. void build(LL l,LL r){
  21. LL k=++cut;
  22. tree[k].l=l,tree[k].r=r;
  23. if(l==r){
  24. tree[k].sum=0;
  25. return ;
  26. }
  27. LL mid=(l+r)>>1;
  28. tree[k].lc=cut+1;
  29. build(l,mid);
  30. tree[k].rc=cut+1;
  31. build(mid+1,r);
  32. }
  33. void change(LL k,LL p,LL add){
  34. if(tree[k].l==tree[k].r&&tree[k].l==p){
  35. tree[k].sum=add;
  36. return ;
  37. }
  38. LL mid=(tree[k].l+tree[k].r)>>1;
  39. if(p<=mid) change(tree[k].lc,p,add);
  40. else if(p>mid) change(tree[k].rc,p,add);
  41. tree[k].sum=max(tree[tree[k].lc].sum,tree[tree[k].rc].sum);
  42. }
  43. LL query(LL k,LL l,LL r){
  44. if(l<=tree[k].l&&tree[k].r<=r) return tree[k].sum;
  45. LL tot=-0x7fffffff;
  46. LL mid=(tree[k].l+tree[k].r)>>1;
  47. if(r<=mid) tot=max(query(tree[k].lc,l,r),tot);
  48. else if(l>mid) tot=max(query(tree[k].rc,l,r),tot);
  49. else tot=max(max(query(tree[k].lc,l,mid),query(tree[k].rc,mid+1,r)),tot);
  50. return tot;
  51. }
  52. int main(){
  53. freopen("bzoj_1012.in","r",stdin);
  54. freopen("bzoj_1012.out","w",stdout);
  55. LL x,y,z,p=0;
  56. char ch;
  57. m=read();mod=read();build(1,m);
  58. for(int i=1;i<=m;i++){
  59. cin>>ch;x=read();
  60. if(ch=='A') change(1,++n,(x+p+mod)%mod);
  61. else {
  62. p=query(1,n-x+1,n);
  63. cout<<p;printf("\n");
  64. }
  65. }
  66. return 0;
  67. }

Cogs 1844. [JSOI2008]最大数maxnumber的更多相关文章

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

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

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

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

  3. 【bzoj1012】[JSOI2008]最大数maxnumber

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

  4. BZOJ 1012: [JSOI2008]最大数maxnumber【线段树单点更新求最值,单调队列,多解】

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 10374  Solved: 4535[Subm ...

  5. [JSOI2008]最大数maxnumber

    [JSOI2008]最大数maxnumber 标签: 线段树 单独队列 题目链接 题解 线段树裸题. 如果一直RE可能是你用的cin/cout. Code #include<cstdio> ...

  6. bzoj 1012: [JSOI2008]最大数maxnumber (线段树)

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 13081  Solved: 5654[Subm ...

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

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

  8. 大视野 1012: [JSOI2008]最大数maxnumber(线段树/ 树状数组/ 单调队列/ 单调栈/ rmq)

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

  9. bzoj-1012 1012: [JSOI2008]最大数maxnumber(线段树)

    题目链接: 1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MB Description 现在请求你维护一个数列,要 ...

随机推荐

  1. HW3.29

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  2. C#定义类成员

    1.成员定义 public--成员可以由任何代码访问. private--成员只能由类中的代码访问(如果没有使用任何关键字,就默认使用这个关键字). internal--成员只能由定义它的程序集(项目 ...

  3. Linux的read命令

    对于写bash脚本的朋友,read命令是不可或缺的,需要实践一下就可以了解read命令的大致用途: 编写一个脚本: #!/bin/bash # hao32 test read echo -e &quo ...

  4. redis的hash, list, set类型相关命令

    hash相关命令: 1. hset HSET key field value 将哈希表key中的域field的值设为value.如果key不存在,一个新的哈希表被创建并进行hset操作.如果域fiel ...

  5. CentOS的Redis内存分配策略配置

    安装了一主两从节点,启动之后发现有一个警告: 大概是说overcommit_memory设置成了0,在低内存环境下后台保存可能会失败,设置成1重启可解决. 然后,不太懂这个配置的含义,google一把 ...

  6. hdoj 2579 Dating with girls(2)【三重数组标记去重】

    Dating with girls(2) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  7. null值是不会算在count以内的

    做统计的时候,null是不计算在count以内的.所以字段的值最好不要设置为null. 比如:select count(user_id) as beyond_num from fs_users_add ...

  8. 适合高级Java程序员看的12本书

    1.Thinking in Java 2.Head First Java 3.Java in a Nutshell 4.The elements of Java style 5.Effective J ...

  9. MAC OS X 终端命令入门 (简单常用整理)

    在这里记下..防止丢失 pwd 当前工作目录 cd(不加参数) 进root cd(folder) 进入文件夹 cd .. 上级目录 cd ~ 返回root cd - 返回上一个访问的目录 rm 文件名 ...

  10. css z-index详解

    写css z-index的时候经常会出现很多莫名其妙的问题,下面对z-index属性做彻底的剖析,本文参考了<一个css中z-index的用法>,并做了很多demo,方便了解z-index ...