首页 > 代码库 > 1304吃糖果

1304吃糖果

题意:有N种糖果,每种有Mi(0<Mi<=1000000)个,是否存在一种吃糖果顺序使得相邻糖果不相同(先吃这一种,再吃下一种)。

分析:插空,如果最多的一种糖果,能被剩下所有的糖果插空,则存在,即ans - 1 <= sum - ans.

 1 #include<iostream> 2 #include<cstdio> 3 #include<string> 4 #include<cstring> 5 #include<set> 6 #include<map> 7 #include<algorithm> 8 #include<cstdlib> 9 #include<vector>10 #include<cmath>11 #include<sstream>12 using namespace std;13 int main()14 {15     int N;16     while(scanf("%d", &N) != EOF)17     {18         int sum = 0;19         int ans = 0;20         for(int i = 0; i < N; ++i)21         {22             int x;23             scanf("%d", &x);24             ans = max(ans, x);25             sum += x;26         }27         if(ans - 1 > sum - ans)28             printf("No\n");29         else printf("Yes\n");30     }31     return 0;32 }

 

1304吃糖果