码迷,mamicode.com
首页 > 其他好文 > 详细

【尺取法】【Multiset】bzoj1342 [Baltic2007]Sound静音问题

时间:2014-10-31 07:41:33      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   for   sp   div   on   问题   

O(n)地枚举所有长度为k的段,每次暴力转移。

转移的时候只是从最后插入一个数,从前面删去一个数。

计算的时候要取当前的max和min。

用multiset(∵元素是可重的)以上这些操作都是O(logn)的。

 1 #include<cstdio>
 2 #include<set>
 3 using namespace std;
 4 multiset<int>S;
 5 multiset<int>::iterator it;
 6 int n,m,limit; bool goal;
 7 int a[1000001];
 8 int main()
 9 {
10     scanf("%d%d%d",&n,&m,&limit);
11     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
12     for(int i=1;i<=m;i++) S.insert(a[i]);
13     it=S.end(); it--;
14     if((*it)-(*S.begin())<=limit) puts("1"),goal=1;
15     for(int i=2;i<=n-m+1;i++)
16       {
17           S.erase(S.find(a[i-1]));
18           S.insert(a[m+i-1]);
19           it=S.end(); it--;
20           if((*it)-(*S.begin())<=limit) printf("%d\n",i),goal=1;
21       }
22     if(!goal) puts("NONE");
23     return 0;
24 }

 

【尺取法】【Multiset】bzoj1342 [Baltic2007]Sound静音问题

标签:style   blog   io   color   for   sp   div   on   问题   

原文地址:http://www.cnblogs.com/autsky-jadek/p/4064149.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!