題目鏈接:點擊打開鏈接
題目大意:給你每個字母的出現次數,問你最多能用多少個組成若干迴文串。
解題思路:對於都是偶數個的情況,很明顯答案就是總和,對於有奇數的情況,我們應該均勻分配剩下的點。算是一道簽到題吧。
代碼:
#include<iostream>
#include<vector>
#include<cmath>
#include<algorithm>
#include<ctime>
#include "cstdio"
#include "string"
#include "string.h"
#include "map"
using namespace std;
int main()
{
int T,m,n;
scanf("%d", &T);
while (T--)
{
scanf("%d", &n);
int num = 0, sum = 0;
for (int i = 0;i < n;i++)
{
int temp;
scanf("%d", &temp);
if (temp & 1)
num++;
sum += temp;
}
if (num == 0)
printf("%d\n", sum);
else
{
sum -= num;
sum = (int)(sum / num / 2) * 2;
printf("%d\n", sum + 1);
}
}
return 0;
}