上回书说道不愿透露姓名的巨巨还剩下一个数组,这个数组记录了他学习c++ 语言的过程。
现在这个数组a里有一些字符,第i个字符的数量是a[i]。巨巨想用这些字符来构造一些回文串好让他的程序通过编译。
他想知道各种组合方案中最短字符串长度的最大值。
 
举个栗子:
现在有 ‘a’, ‘b’, ‘c’, ‘d’ 四种字符并且他们的数量是 {2,3,2,2} 巨巨可以构造出 { “acdbbbdca”}, { “abbba”, “cddc”}, { “aca”, “bbb”, “dcd”},或{ “acdbdca”, “bb”} 四种方案.
在以上方案中,第一个方案的最短字符串长度比其他三种方案中的最短字符串长度都长,为9。
 
回文串嘛,大家都懂的就不废话了。

Input

多组测试数据。第一行一个整形t,代表测试数据的组数。
对于每组测试数据,第一行一个整形n(1<=n<= 105),代表字符的种类数。
接下来一行n个数,a1, a2,...,an(0<=ai<=104);

Output

对于每组测试数据,输出一个代表答案的整数。·

Sample Input

4
4
1 1 2 4
3
2 2 2
5
1 1 1 1 1
5
1 1 2 2 3

Sample Output

3
6
1
3 题目很简单,中文的,好理解,给出一些字符的个数,然后组成不同的回文串组合,一个组合中可以有一个或多个回文串,要把字符全用完,每个回文串组合中找出一个长度最小的,求这些最小长度的最大值。
直接求奇数字符串的的个数,然后把总的字符按这个个数等分,可以求出答案。 代码:
#include <iostream>
#include <string> using namespace std; int main()
{
int a;
int t,n;
cin>>t;
while(t --)
{
int o = ,sum = ;
cin>>n;
for(int i = ;i < n;i ++)
{
cin>>a;
if(a%)o++;
sum += a;
}
if(o)
{
sum /= o;
if(sum && sum % == )sum --;//如果存在奇数个数的字符,那么形成的回文串大小一定也是奇数。
}
cout<<sum<<endl;
}
}

Keep On Movin的更多相关文章

  1. HDU 5744 Keep On Movin

    Keep On Movin Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  2. HDU 5744 Keep On Movin (贪心)

    Keep On Movin 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5744 Description Professor Zhang has k ...

  3. HDU 5744 Keep On Movin 贪心

    Keep On Movin 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5744 Description Professor Zhang has k ...

  4. hdu-5744 Keep On Movin(思维)

    题目链接: Keep On Movin Time Limit: 4000/2000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Oth ...

  5. hdu 5744 Keep On Movin (2016多校第二场)

    Keep On Movin Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  6. 【HDU 5744】Keep On Movin

    找出奇数个的数有几个,就分几组. #include<cstdio> #include<cstring> #include<algorithm> #include&l ...

  7. HDU 5744 Keep On Movin (贪心) 2016杭电多校联合第二场

    题目:传送门. 如果每个字符出现次数都是偶数, 那么答案显然就是所有数的和. 对于奇数部分, 显然需要把其他字符均匀分配给这写奇数字符. 随便计算下就好了. #include <iostream ...

  8. HDU5744:Keep On Movin(字符串)

    题意: 给出t组测试数据,每组给出正整数n表示有n种字符,接下来给出n个数表示该种字符的数目,操作一下,使得可以构造的最小回文串字符数目最大且输出. 分析: 如果每个字符出现次数都是偶数, 那么答案显 ...

  9. HDU5744 Keep On Movin (思维题,水题)

    Problem Description Professor Zhang has kinds of characters and the quantity of the i-th character i ...

  10. Keep On Movin (贪心)

    #include<bits/stdc++.h> using namespace std; int main(){ int T, n, a;scanf("%d",& ...

随机推荐

  1. zw版【转发·台湾nvp系列Delphi例程】HALCON DispArc

    zw版[转发·台湾nvp系列Delphi例程]HALCON DispArc zw版[转发·台湾nvp系列Delphi例程]HALCON DispArc----------RAD Studio XE D ...

  2. QML事件处理 八

    1.MouseArea MouseArea 是一个不可见的项目,通常用来和一个可见的项目配合使用来为其提供鼠标处理.鼠标处理的逻辑可以包含在一个MouseArea项目中. MouseArea的enab ...

  3. 20145335郝昊《网络攻防》Bof逆向基础——ShellCode注入与执行

    20145335郝昊<网络攻防>Bof逆向基础--ShellCode注入与执行 实验原理 关于ShellCode:ShellCode是一段代码,作为数据发送给受攻击服务器,是溢出程序和蠕虫 ...

  4. tcpdump 的正确食用方法

    目录 tcpdump 使用笔记 重要报文头 字段表 ip header tcp header 基础使用 高级版本 指定ttl(通过ttl能够确定系统的类型) tcpdump 使用笔记 重要报文头 字段 ...

  5. The current .NET SDK does not support targeting .NET Core 3.0

    编译错误 Severity Code Description Project File Line Suppression StateError NETSDK1045 The current .NET ...

  6. 判断一个数是否是4的n次方

    def is_Power_of_four(n): while n and not (n & 0b11): n >>= ) print(is_Power_of_four()) pri ...

  7. package 'yaml-cpp' not found

    -- Using these message generators: gencpp;genlisp;genpy -- checking for module 'yaml-cpp' -- package ...

  8. python 获取5天前的日期

    from datetime import date, timedelta dt = date.today() - timedelta() print('Current Date :',date.tod ...

  9. Git入门及常用命令(1)(window环境下)

    文章参考摘抄自:git教程 1.git的安装 Windows下要使用很多Linux/Unix的工具时,需要Cygwin这样的模拟环境,Git也一样.Cygwin的安装和配置都比较复杂,就不建议你折腾了 ...

  10. Angular4笔记——表单状态相关的属性

    表单状态字段(FromControl)touched和untouched用来判断用户是否访问过一个字段(也就是这个字段是否获取过焦点,如果获取过焦点,touched是true,untouched是fa ...