http://acm.hdu.edu.cn/showproblem.php?pid=1205
思路 :吃糖的话要从数量最多的那种开始吃,如果碰到某些情况就会吃不完,就像你把少的糖先吃了,就没法将多的糖隔开了。例如5 1 1 1 1,你先从5开始吃就能吃完,但是如果你从1开始吃就吃不完。而如果5块糖就只需要4块其他的糖进行分隔就吃得完,所一就要判断最多的那个数sum-max+1>=max就可以了 。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//HDU1205 #include <cstdio> #include <cstring> #include <iostream> using namespace std ; __int64 a[10000100] ; int main() { int T ; __int64 n ; scanf("%d",&T) ; for(int i = 0 ; i < T ; i++) { scanf("%I64d",&n) ; __int64 sum = 0 ,maxx = 0; for(__int64 j = 0; j < n ; j++) { scanf("%I64d",&a[j]) ; sum += a[j] ; maxx = max(maxx,a[j]) ; } if(sum - maxx + 1 >= maxx) printf("Yes ") ; else printf("No ") ; } return 0 ; }