输入:
5
1 1
1 1
1 1
2 1
1 2
输出:
No
No
Yes
No
No
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class StickPuzzle {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
List<Integer> list = new ArrayList<>(); //放的是木棒的长度
//List 是一个接口,它继承于Collection的接口。它代表着有序的队列。
//ArrayList 是一个数组队列,相当于动态数组。它由数组实现,随机访问效率高,随机插入、随机删除效率低。
for(int i =0; i < n; i++) {
int temp = sc.nextInt();
//1:代表添加 2:代表删除
if(temp == 1) {
list.add(sc.nextInt());
} else {
int temp2 = sc.nextInt();
if (list.contains(temp2)){
//删除
list.remove((Object)temp2);
//remove()的参数若是int,代表的是删除此下表的值,转为Object代表要删除的值
}
}
//判断是否能组成简单多边形
IsPoiygon(list);
}
}
private static void IsPoiygon(List list) {
Collections.sort(list);//按升序排序
int maxLen = (Integer)list.get(list.size()-1);//位置就是木棒最长的
int len = 0;//所有长度的总和
for (int i =0; i< list.size() - 1; i++) {
len += (Integer)list.get(i);
}
//最长的 > 除过最长的其余长的和,就可以组成简单多边形
if (len > maxLen) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}