Keep On Movin
.
.
给出n个字母,问组成的回文串最短的最长为多少。
.
.
对于奇数的我们拆分成1+偶数,最后得到k个1和l个偶数。然后考虑把这些1插进去偶数中,算出偶数的和除以k,即分成k组回文串,然后+1就好
.
.
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
int tt, x, t, sum, n;
scanf("%d", &tt);
while (tt--){
scanf("%d", &n);
sum = 0;
t = 0;
for (int i = 1; i <= n; i++) {
scanf("%d", &x);
if (x%2 == 0) {
t = t+x;
} else {
x--;
t = t+x;
sum = sum+1;
}
}
if (sum == 0) {
printf("%d\n", t);
} else {
t = t/sum;
if (t%2 == 1) t--;
printf("%d\n", t+1);
}
}
}