https://vjudge.net/problem/CodeChef-CORUS
题意:有n个感染病毒的人,一共有26种病毒(26个小写字母),每次询问都给出x间隔离室,拥有同一种病毒的人不能再同一间隔离室,求不在隔离室的有多少人。
题记:记录一下每种病毒拥有的人数,然后每次询问都遍历一遍即可。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=26;
int a[N];
int main(){
int T;
cin>>T;
while(T--){
memset(a,0,sizeof(a));
int n,q;
cin>>n>>q;
char c;
for(int i=0;i<n;i++){
cin>>c;
a[c-'a']++;
}
int x;
while(q--){
int ans=0;
cin>>x;
for(int i=0;i<26;i++){
if(a[i]>x)
ans+=a[i]-x;
}
cout<<ans<<endl;
}
}
return 0;
}