题目链接:点击打开链接
题目大意:给你每个字母的出现次数,问你最多能用多少个组成若干回文串。
解题思路:对于都是偶数个的情况,很明显答案就是总和,对于有奇数的情况,我们应该均匀分配剩下的点。算是一道签到题吧。
代码:
#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;
}