码迷,mamicode.com
首页 > Windows程序 > 详细

UVA 11491 Erasing and Winning

时间:2015-12-17 22:22:18      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
#include<bits/stdc++.h>
#define REP(i,a,b) for(int i=a;i<=b;i++)
#define MS0(a) memset(a,0,sizeof(a))
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1

using namespace std;

typedef long long ll;
const int maxn=1000100;
const int INF=1<<29;

int n,d;
int a[maxn];
int ans[maxn],cnt;
deque<int> q;

int main()
{
    freopen("in.txt","r",stdin);
    while(cin>>n>>d,n||d){
        REP(i,1,n) scanf("%1d",&a[i]);
        while(!q.empty()) q.pop_back();
        REP(i,1,d){
            while(!q.empty()&&q.back()<a[i]) q.pop_back();
            q.push_back(a[i]);
        }
        cnt=0;
        REP(i,d+1,n){
            while(!q.empty()&&q.back()<a[i]) q.pop_back();
            q.push_back(a[i]);
            ans[++cnt]=q.front();q.pop_front();
        }
        REP(i,1,cnt) printf("%d",ans[i]);
        puts("");
    }
    return 0;
}
View Code

单调队列维护划窗最值的题,一开始愣是写完了线段树才发现是划窗最值。。

UVA 11491 Erasing and Winning

标签:

原文地址:http://www.cnblogs.com/--560/p/5055346.html

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