• bzoj1012:最大数


    1012: [JSOI2008]最大数maxnumber

    Time Limit: 3 Sec  Memory Limit: 162 MB
    Submit: 6022  Solved: 2605
    [Submit][Status][Discuss]

    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
    线段树,那处输入字符然后再输入数字那里处理很重要
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int nmax=800005;
    const int inf=0x7fffffff;
    struct edge{
     int ql,qr,p,v,ans,n;
     int maxv[nmax];
     void init(int n){
      this->n=n;
     }
     void insert(int l,int r,int k){
      if(l==r){
       maxv[k]=v;
      }
      else{
       int m=(l+r)/2;
          if(p<=m)
           insert(l,m,2*k);
          else
              insert(m+1,r,2*k+1);
          maxv[k]=max(maxv[2*k],maxv[2*k+1]);
      }
     }
     int  query(int l,int r,int k){
      if(ql<=l&&qr>=r)
       return maxv[k];
      int m=(l+r)/2;
      int ans=-inf;
      if(ql<=m)
       ans=max(ans,query(l,m,2*k));
      if(qr>m)
       ans=max(ans,query(m+1,r,2*k+1));
      return ans;
     }
     void Insert(int i,int val){
      p=i;
      v=val;
      insert(1,n,1);
     }
     int Query(int a,int b){
      ql=a;
      qr=b;
      return query(1,n,1);
     }
     
    }st;
    int main(){
     int n,mod;
     scanf("%d%d",&n,&mod);
     int o=0,e;
     int cur=0;
     st.init(n);
     while(n--){
      char c;
      while(scanf("%c",&c) && !isupper(c));                            =>!!!
      scanf("%d",&e);
      if(c=='A'){
       st.Insert(++cur,(e+o)%mod);
      }
      else printf("%d ",o=st.Query(cur-e+1,cur));
     }
     return 0;
  • 相关阅读:
    3月21日软件工程概论课堂测验
    四则运算2
    构建之法阅读笔记01
    软件工程学习进度条02-06
    软件工程个人作业01
    简牍《构建之法》
    2月29日课后作业
    读《大道至简》第七八章有感
    个人冲刺——第十天
    人月神话阅读笔记02
  • 原文地址:https://www.cnblogs.com/20003238wzc--/p/4792781.html
Copyright © 2020-2023  润新知