题意理解了好久,最后还是理解错了。。
“He also wants to maximize the length of the shortest palindromic string.”
应该是要使一组里的最小回文子串尽量大的情况下,输出那组的最小回文子串的长度
比如例1,应该是在cdadc,dbd时,输出3
所以就是把可以构成回文的字母(偶数的字母)平均分配给那些只有单个的字母
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--)
{
int n;
int a[100001];
memset(a,0,sizeof(int));
cin>>n;
int i;
int j=0,o=0,sum=0;
for(i=0;i<n;i++)
{
cin>>a[i];
if(a[i]!=0)
{
if(a[i]%2==0)
{
sum+=a[i];
o++;
}
else
{
sum+=a[i]-1;
j++;
}
}
}
if(j!=0)
{
sum=sum/j;
if(sum%2==0) //平均分给每个单数的字母
sum++; //如果每个分到的是偶数,就加上那个字母的个数1;如果是奇数,则最短的那个要减去1再加上本身自己1
cout<<sum<<endl;
}
else
cout<<sum<<endl;
}
return 0;
}