http://acm.hdu.edu.cn/showproblem.php?pid=1205

max为最大堆数量,s为总数。

保证max-(s-max)=2*max-s<=1即可,因为只要能保证最大堆数量和其他堆数量差在一个以内,就可以做到别的堆拿一个最大堆拿一个(剩下yy)这种操作。

View Code
#include <stdio.h>
int a[1100000];
int main()
{
    int t,n;
    int i;
    __int64 s;
    int max;
    scanf("%d",&t);
    while(t--)
    {
        s=max=0;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            scanf("%d",a+i);
            if(max<a[i])max=a[i];
            s+=a[i];
        }
        printf(2*max-s<=1?"Yes\n":"No\n");
    }
    return 0;
}

 

相关文章:

  • 2021-07-27
  • 2021-12-06
  • 2022-12-23
  • 2021-05-17
  • 2021-06-03
  • 2021-07-13
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-05-25
  • 2022-01-20
  • 2022-01-06
  • 2022-12-23
  • 2022-02-19
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案