uva11491 奖品的价值(贪心)

Posted PECHPO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uva11491 奖品的价值(贪心)相关的知识,希望对你有一定的参考价值。

uva11491 奖品的价值(贪心)

给你一个n位的整数,请你删除其中的d个数字,使得整数尽可能大。1<=d<n<=1e5。

首先因为前面的数位更重要,所以从左往右将每一位数字加入栈中。如果它比栈顶的大,就把栈顶的删掉,因为这样数肯定更大。如果删满了d个,就不再弹出栈顶了。如果全部扫完都删不满d个,只需舍弃最后的数位,使被删的数达到d即可。

#include <cstdio>
#include <cstring>
using namespace std;

const int maxn=1e5+5;
int n, m, lens, tail, dis;
char s[maxn], ans[maxn];

int main(){
    while (~scanf("%d%d", &n, &m)&&n){
        scanf("%s", s);
        tail=0; dis=0;
        for (int i=0; i<n; ++i){
            while (tail>0&&dis<m&&ans[tail-1]<s[i])
                --tail, ++dis;
            ans[tail++]=s[i];
        }
        for (int i=0; i<n-m; ++i)
            printf("%c", ans[i]);
        puts("");
    }
    return 0;
}

以上是关于uva11491 奖品的价值(贪心)的主要内容,如果未能解决你的问题,请参考以下文章

UVA11491 奖品的价值

UVa 11491 - Erasing and Winning

UVA11491-Erasing ans Winning(贪心)

习题 8-4 UVA - 11491Erasing and Winning

UVa 11491 Erasing and Winning 题解

uva11491 Erasing and Winning