Основное
 
 
Отправитель Задача Язык Вердикт Время Память Отослано Протест.  
44824702 Дорешивание:
shaochengxi
1070J - 29 C++14 (GCC 6-32) Полное решение 312 мс 328 КБ 2018-10-25 08:07:43 2018-10-25 08:07:43
→ Исходный код
#include<bits/stdc++.h>
using namespace std;
const int M=30005;
const int N=200005;
const int inf=0x3f3f3f3f;
char s[N];
int n,m,k,cnt[30],ans,dp[M];
int main(){
	int T;scanf("%d",&T);
	while (T--)
	{
		scanf("%d%d%d",&n,&m,&k);
		scanf("%s",s+1);ans=inf;
		memset(cnt,0,sizeof(cnt));
		for (int i=1;i<=k;i++) cnt[s[i]-'A']++;
		for (int i=0;i<26;i++)
		if (cnt[i])
		{
			memset(dp,0,sizeof(dp));dp[0]=1;
			for (int j=0;j<26;j++)
			  if (j!=i)
			   for (int k=n;k>=cnt[j];k--) dp[k]|=dp[k-cnt[j]];
			for (int j=1;j<=cnt[i]&&j<=n;j++)//bitset要小心不要指入负数域 
			  if (dp[n-j]==1) ans=min(ans,j*max(cnt[i]-j-(k-n-m),0));
		}
		printf("%d\n",ans);
	}
	return 0;
}
?
Время: ? ms, память: ? КБ
Вердикт: ?
Ввод
?
Вывод участника
?
Ответ жюри
?
Комментарий чекера
?
Диагностика
?
Показать детали тестирования