Изменения рейтингов за последние раунды временно удалены. Скоро они будут возвращены. ×

 
 
 
 
Основное
 
 
Отправитель Задача Язык Вердикт Время Память Отослано Протест.  
45119635 Дорешивание:
ccsu_cat_love_jiejie
1070J - 29 GNU C++11 Полное решение 186 мс 992 КБ 2018-10-31 05:46:47 2018-10-31 05:46:47
→ Исходный код
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int maxn=2e5+10;
char s[maxn];
int c[26],f[maxn];
int main()
{
	int T;
	scanf("%d",&T);
	f[0]=1;
	while(T--)
	{
		int a,b,n;
		memset(c,0,sizeof(c));
		cin>>a>>b>>n;
		scanf("%s",s+1);
		for(int i=1;i<=n;i++)
		c[s[i]-'A']++;
		int ans=1e9;
		for(int i=0;i<26;i++)
		{
			for(int j=1;j<=a;j++)
			f[j]=0;
			for(int j=0;j<26;j++)
			{
				if(i==j||c[j]==0)continue;
				for(int k=a;k>=c[j];k--)
				f[k]|=f[k-c[j]];
			}
			for(int j=0;j<=a;j++)
			if(f[j])
			{
				int l=max(0,a-j);
				//int l=min(a-j,c[i]);
				int r=max(0,b-(n-j-c[i]));
				//printf("l=%d r=%d c=%d i=%d\n",l,r,c[i],i);
				if(l+r<=c[i])ans=min(ans,l*r);
			}
		}
		cout<<ans<<"\n";
	}
}
 
?
Время: ? ms, память: ? КБ
Вердикт: ?
Ввод
?
Вывод участника
?
Ответ жюри
?
Комментарий чекера
?
Диагностика
?
Показать детали тестирования