HDU ACM 1205 吃糖果

解析:

1、首先假设两种糖果,其中一种数量最大为n,要想这两种糖果交替吃完,另一种糖果最少应为n-1;n个糖果排成一排,内部共有n-1个空,分离相邻的两个相同的糖果。题中,找出某种糖果的最大数量max,,则至少需要max-1个糖果(即除去最大数量剩下的总和)去填充空隙。若剩下糖果数大于max也是可以的,我们可以想成把数量较少的糖果用来“加厚”原来的空隙(即再把他们填到最大数量糖果的空隙中,可以两个或两个以上不同的糖果去填充同一个空隙)。因此需满足sum-max>=max-1;即sum-max+1>=max。即剩余的糖果总数要比max-1多或等于。

#include<iostream> using namespace std;int main() { __int64 sum,max;int i,T,n,m;scanf("%d",&T);while(T–){scanf("%d",&n);sum=0;max=-1;for(i=0;i<n;i++){scanf("%d",&m);sum+=m;if(max<m)max=m;}if(sum-max+1>=max) puts("Yes");else puts("No");}return 0; }

不要哭,你要努力地往前看,你要相信阳光总在风雨后,你最终会看到彩虹的。

HDU ACM 1205 吃糖果

相关文章:

你感兴趣的文章:

标签云: