bzoj 1012[JSOI2008]最大数maxnumber

这道题很裸,可以练习三种方法(三个愿望一次满足233)

我主要使用单调队列去做,运用单调队列去维护后k个里面最大的数

然后不断进行插入。

这道题我是参考黄学长代码写的,他的博客里还有另外两种做法

附上这道题代码

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 int a[200001],max[200001];
 5 int l,t,m,d,p;
 6 char q[1];
 7 int main(){
 8     scanf("%d%d",&m,&d);
 9     while(m--){
10         scanf("%s%d",q,&p);
11         if(q[0]=='A'){
12             a[++t]=(l+p)%d;
13             for(int i=t;i;i--)
14             {    
15                 if(max[i]<a[t])max[i]=a[t];
16                 else break;
17             }
18         }
19         else printf("%d\n",l=max[t-p+1]);
20     }
21 //    system("pause");
22     return 0;
23     }

 

posted @ 2017-09-18 21:09  Elfish?  阅读(128)  评论(1编辑  收藏  举报