本文共 526 字,大约阅读时间需要 1 分钟。
题目大意:
给一串字符,其中包括n个字符,要求删除d个字符,使得剩下的字符尽量大
由于要使得最后剩余的字符串尽量大,我们可以边 输入边处理。
贪心策略:
当已经存在的字符小于n-d时,把字符加进去,如果 k+n-i>n-d(k是已经保存下来的字符个数,n是总个数,i是当前输入的字符个数,d数需要删除的字符个数,此式子代表意义:已经剩余的字符个数,大于需要剩余字符的个数)此时需要删除,
代码如下:
#include#include #include #include #include #include #define mp make_pair using namespace std;const int MAXN=200050;int main(){ int n,d; while(~scanf("%d%d",&n,&d)&&(n+d)) { int k=0; char c; getchar(); char a[100000]; for(int i=0; i 0&&c>a[k]&&k>i-d) k--; if(k+d
转载地址:http://fygsi.baihongyu.com/