题意:相同的糖果不能放在一起吃,现在有N类糖果,每种有m个,问能否把他们吃完
思路:
将最多的糖果排成一条线,用其他的糖果插空,
如最多的糖果为5,再放4个糖果,现在间隔变成了10个,每个间隔还可以放一个,所以这样一定能吃完,怎样吃不完呢?
没有把最多的糖果完全隔开,就会吃不完,也就是说 sum - Max + 1 < Max ,sum - Max 为剩余糖果个数,+1就是剩余糖果的间隔
没有吧糖果分割完
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
__int64 t;
scanf("%I64d",&t);
while(t--)
{
__int64 n;
scanf("%I64d",&n);
__int64 sum = 0,Max = -1;
for(int i = 0; i < n; i++)
{
__int64 a;
scanf("%I64d",&a);
sum += a;
if(Max < a)
Max = a;
}
if(sum - Max +1 >= Max)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
本文探讨了一个关于糖果分配的数学问题,通过将最多的糖果排成一条线,并用其他糖果插入间隔的方式,实现对糖果的分配。通过数学逻辑判断是否能够完成全部糖果的分配。文章提供了一个简单的算法来解决这个问题。

被折叠的 条评论
为什么被折叠?



