Codeforces Round #490 (Div. 3)-C. Alphabetic Removals(思维)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sugarbliss/article/details/85080422

题目链接:http://codeforces.com/contest/999/problem/C

题意:给了n和k,然后输入一个长度为n的字符串,然后有k次操作,从字符串中依次按abcd...的顺序删除字符,最后输出k次操作后的字符串。

思路:sort排序后的前k个字符就是我们要删除的字符,用map标记要删除的字符,直接输出就好了。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define read(x) scanf("%d",&x)
const int maxn = 1e6+7;
map<char,int>mp;
int main()
{
    int n, k; read(n); read(k);
    string s, t; cin >> s; t = s;
    sort(t.begin(),t.end());
    for(int i = 0; i < k; i++) mp[t[i]]++;
    for(int i = 0; i < n; i++)
    {
        if(!mp[s[i]]) cout << s[i];
        else mp[s[i]]--;
    }
}

猜你喜欢

转载自blog.csdn.net/sugarbliss/article/details/85080422