?
# | Author | Problem | Lang | Verdict | Time | Memory | Sent | Judged | |
---|---|---|---|---|---|---|---|---|---|
46259509 |
Practice: touristRespectLoverClub |
1070J - 29 | GNU C++11 | Accepted | 140 ms | 4908 KB | 2018-11-26 21:55:53 | 2018-11-26 21:55:53 |
#include <bits/stdc++.h> #define INF 1000000000 using namespace std; const int M = 1000010; int num[110],f[M],n,m,K; char s[M]; int main() { int t; scanf("%d",&t); while(t--) { scanf("%d%d%d%s",&n,&m,&K,s+1); memset(num,0,sizeof(num)); for(int i=1;i<=K;i++) num[s[i]-'A'+1]++; long long ans=INF; int h=K-n-m; if(n<m) swap(n,m); f[0]=1; for(int i=1;i<=26;i++) { for(int j=1;j<=n;j++) f[j]=0; for(int j=1;j<=26;j++) { if(i==j) continue; for(int k=n;k>=num[j];k--) f[k]|=f[k-num[j]]; } for(int j=min(n,num[i]);j>=0;j--) { if(!f[n-j]) continue; ans=min(ans,(long long)j*max(0,num[i]-j-h)); } } cout<<ans<<endl; } return 0; }
?
?
?
?