题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1205

Problem Description

HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样;可是Gardon不知道是否存在一种吃糖果的顺序使得他能把所有糖果都吃完?请你写个程序帮忙计算一下。

Input

第一行有一个整数T,接下来T组数据,每组数据占2行,第一行是一个整数N(0<N<=1000000),第二行是N个数,表示N种糖果的数目Mi(0<Mi<=1000000)。

Output

对于每组数据,输出一行,包含一个"Yes"或者"No"。

Sample Input

2
3
4 1 1
5
5 4 3 2 1

Sample Output

No
Yes
解题思路:这是一道排列问题,就是将若干种类的糖果按要求排列,相同种类的糖果不能相邻。这时考虑插空法。先考虑数量最多的那一种糖果(假设这种糖果有n个)先间隔排好,留出n-1个空格。剩下的糖果总数大于等于n-1,就可以使得数量最多的那一种糖果不会相邻,再将剩下的糖果按种类依次插入之前已经排好糖果的空隙中,则可以满足题目的要求,输出yes。如果剩下的糖果总数小于n-1,数量最多的那一种糖果一定会出现相邻的状况,因此输出no。因此,设数量最多的那一种糖果的数量为N,所有糖果总数为A,如果N-1<=A-N,即2N-1<=A,输出yes,否则输出no。

AC代码:

 #include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{
int T,N,m,maxnum;//插空法:用一种数目最多的进行排列,让剩下的数目依次插空
LL sum;//规律:如果剩下的数目大于等于有maxsum-1这么多空,则yes,否则No
cin>>T;
while(T--){
cin>>N;
maxnum=sum=;
while(N--){
cin>>m;
sum+=m;
maxnum=max(maxnum,m);//找出最大的数
}
if(sum-maxnum>=maxnum-)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return ;
}

题解报告:hdu1205吃糖果(插空法)的更多相关文章

  1. [HDU1205]吃糖果 题解(鸽巢原理)

    [HDU1205]吃糖果 Description -HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次 ...

  2. HDU1205 吃糖果

    吃糖果 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submis ...

  3. Hdu1205 吃糖果 2017-06-29 14:26 24人阅读 评论(0) 收藏

    吃糖果 Problem Description HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另 ...

  4. COJN 0584 800603吃糖果

    800603吃糖果 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名( ...

  5. 2015浙江财经大学ACM有奖周赛(一) 题解报告

    2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...

  6. 8I - 吃糖果

    HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样:可是Gardon不知道是否存在一种吃 ...

  7. [DP题]吃糖果

    1944:吃糖果 总时间限制:1000ms内存限制:65536kB 描述 名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力,20 > N >0).妈妈告诉 ...

  8. hdu_吃糖果(思维题)

    吃糖果 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submiss ...

  9. HD1205吃糖果(鸽巢、抽屉原理)

    吃糖果 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submiss ...

随机推荐

  1. [转]三层架构与MVC之间的区别

    我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. ...

  2. 类的相互依赖导致StackOverflowError

    public class SchoolServiceImpl { private static SchoolServiceImpl instance = new SchoolServiceImpl() ...

  3. HTC 328T 提示手机存储不足 out of space怎么办

    不要再用什么软件做优化,做清理,都是治标不治本啊. 1 用豌豆荚备份数据   2 手机恢复出厂设置   3 用豌豆荚恢复数据

  4. python爬虫(二)--了解deque

    队列-deque 有了上面一节的基础.当然你须要全然掌握上一节的全部方法,由于上一节的方法.在以下的教程中 会重复的用到. 假设你没有记住,请你返回上一节. http://blog.csdn.net/ ...

  5. Scrum 每日站会

    站立式会议(Daily Scrum, 有时候我们直接叫做Daily Meeting)是Scrum敏捷软件开发方法学的实践之一,也是团队最容易实施的敏捷实践,实施成本低. 具体做法,团队成员每天固定时间 ...

  6. Linux 文本编辑

    文本编辑: 查看文本内容:    cat:将文件连接并显示    -n:显示时将文件每一行编号        tac:类似于cat,但其功能是逆序显示每一行文件       linlin@ubuntu ...

  7. Form content types

    Forms in HTML documents https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4 17.13.4 Form con ...

  8. java泛型-类型擦除

    详细内容:参考java编程思想P373,p650. Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就 ...

  9. Can't remove netstandard folder from output path (.net standard)

    https://developercommunity.visualstudio.com/content/problem/30940/cant-remove-netstandard-folder-fro ...

  10. YTU 2428: C语言习题 计算该日在本年中是第几天

    2428: C语言习题 计算该日在本年中是第几天 时间限制: 1 Sec  内存限制: 128 MB 提交: 1505  解决: 857 题目描述 定义一个结构体变量(包括年.月.日).编写一个函数d ...