首页 > Web开发 > 详细

bzoj 1012: [JSOI2008]最大数maxnumber

时间:2016-02-28 07:35:57      阅读:316      评论:0      收藏:0      [点我收藏+]
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #define M 200008
 5 using namespace std;
 6 int a[M],n,b[M],d,t,h,len;
 7 char ch[10];
 8 int main()
 9 {
10     scanf("%d%d",&n,&d);
11     for(int i=1;i<=n;i++)
12       {
13         int a1;
14         scanf("%s%d",ch,&a1);
15         if(ch[0]==A)
16           {
17             len++;
18             a1+=t;
19             a1%=d;
20             for(;h&&a[h]<=a1;h--);
21             a[++h]=a1;
22             b[h]=len;
23           }
24         else
25           {
26             int a2=lower_bound(b+1,b+h+1,len-a1+1)-b;
27             t=a[a2];
28             printf("%d\n",t);
29           }
30       }
31     return 0;
32 }

用单调队列,如果加入一个数,它前面比他小的就没有价值了,然后开一个数组存位置,找时找最早出现在范围内的队内的数。

bzoj 1012: [JSOI2008]最大数maxnumber

原文:http://www.cnblogs.com/xydddd/p/5224015.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!