贴代码.
#include <iostream>
#include <algorithm>
using namespace std;
struct alpha{
int num;
char ch;
}arr[30];
bool cmp(alpha a, alpha b){
if(a.num == 0) a.num += 114514191;
if(b.num == 0) b.num += 114514191;
return a.num < b.num;
}
bool is_deleted[30];
string str;
int k, numtype;
int main(){
cin >> str >> k;
for(int i=0; i<26; i++){
arr[i].num = 0;
arr[i].ch = 'a'+i;
}
for(auto i=0u; i<str.size(); i++){
if(arr[str[i]-'a'].num == 0) numtype++;
arr[str[i]-'a'].num++;
}
sort(arr, arr+26, cmp);
for(int i=0; arr[i].num<=k and arr[i].num!=0 and i<26; i++){
// cout << arr[i].ch << ' ' << arr[i].num << endl;
k -= arr[i].num;
is_deleted[arr[i].ch-'a'] = true;
numtype--;
}
cout << numtype << endl;
for(auto i=0u; i<str.size(); i++){
if(!is_deleted[str[i]-'a']) cout << str[i];
}
}
神奇的是,这串代码在CF中是AC的,但在洛谷里就是UKE.
萌新没怎么搞懂洛谷remote judge的使用方法,遇到这种问题如何解决呢?