uva11491 Erasing and Winning

Posted lqerio

tags:

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

边读入边处理 优化了速度
一开始有想错了的地方。处理输入有点想用stringstream, 的问题在于他把字符串连续的数字作为一个整体,遇到空格才分开,所以不适用

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<sstream>
#include<cstring>
using namespace std;

const int maxn = 100005;
int s[maxn];
 
int main()
{
    int n, d;
    while (scanf("%d%d%*c", &n, &d) && n) {
        int t = 0;
        int a;
        d = n - d;
        for (int i = 0; i < n; i++) { //位数相同,贪心策略为最高位最大
            a = getchar() - 0;
            while (t && t + n - i > d && a > s[t - 1]) {
                t--;
            }
            if (t < d) {
                s[t++] = a;
            }
        }
        for (int i = 0; i < t; i++) {
            printf("%d", s[i]);
        }
        printf("
");
    }
 
    return 0;
}

 


以上是关于uva11491 Erasing and Winning的主要内容,如果未能解决你的问题,请参考以下文章

习题 8-4 UVA - 11491Erasing and Winning

UVa 11491 Erasing and Winning 题解

UVA11491-Erasing ans Winning(贪心)

UVa 11491 奖品的价值

uva11491 奖品的价值(贪心)

UVA11491 奖品的价值