找出糖果中数量最大的一种,设其数量为max,然后让其他的所有来往中间插,只有当剩余的糖果数大于等于max-1时才能满足要求
糖果
时间限制:1000 ms | 内存限制:65535 KB
难度:2
描述
topcoder工作室的PIAOYIi超级爱吃糖果,现在他拥有一大堆不同种类的糖果,他准备一口气把它们吃完,可是他有一个习惯,他不喜欢同一种类的糖果连着吃,他喜欢先吃一种,然后再吃另一种。可是PIAOYI不知道是否存在一种顺序能把这些糖果吃完,聪明的你可以帮助他吗?
输入
第一行有一个整数N,接下来有N组数据,第一行有一个整数M(0<M<1000000),第二行是M个数,表示M种糖果的数目Mi(0<Mi<1000000).
输出
对于每组数据,输出一行,包含一个“Yes”或者“No”。
样例输入
2
3
1 1 5
5
1 2 3 4 5
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int cases=scanner.nextInt();
while(cases--!=0)
{
int number=scanner.nextInt();
int result[]=new int[number];
int sum=0,max=0;
for(int i=0;i<number;i++)
{
result[i]=scanner.nextInt();
sum+=result[i];
if(max<result[i])
max=result[i];
}
if(max-1>sum-max)
System.out.println("No");
else {
System.out.println("Yes");
}
/*Arrays.sort(result);
int sum=0;
for(int j=0;j<number-1;j++)
{
sum+=result[j];
}
if(result[number-1]-1>sum)
System.out.println("No");
else {
System.out.println("Yes");
}*/
}
}
}
另外一种写法
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int cases=scanner.nextInt();
while(cases--!=0)
{
int number=scanner.nextInt();
int result[]=new int[number];
for(int i=0;i<number;i++)
{
result[i]=scanner.nextInt();
}
Arrays.sort(result);
int sum=0;
for(int j=0;j<number-1;j++)
{
sum+=result[j];
}
if(result[number-1]-1>sum)
System.out.println("No");
else {
System.out.println("Yes");
}
}
}
}