306笔试8.24
//第一题:镜面反转,ABA 为NO,AHA为YES,ABC为NO,只需找到反转后和原来相同的字母('A','H','I','M','O','T','U','V','W','X','Y'),并判断是不是回文
public class Main {
public static void main(String[] args) {
Set<Character> set=new HashSet<>();
Character[] chars={'A','H','I','M','O','T','U','V','W','X','Y'};
Arrays.stream(chars).forEach(set::add);
Scanner input=new Scanner(System.in);
while (input.hasNextLine()){
System.out.println(IsExcept(set,input.nextLine()));
}
}
private static String IsExcept(Set set,String string) {
int left=0;
int right=string.length()-1;
while (left<=right){
if (!set.contains(string.charAt(left))||!set.contains(string.charAt(right)))return "NO";
if (string.charAt(left++)!=string.charAt(right--)){
return "NO";
}
}
return "YES";
}
} //第二题:闯关->只需将无道具的先冲关再将有道具的按照分数从大到小排序即可
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
long n = input.nextLong();
PriorityQueue<Long> queue = new PriorityQueue<Long>((a, b) -> b.compareTo(a));
long current=0;
while (n > 0) {
long[] item=new long[]{input.nextLong(), input.nextLong()};
if (item[1]==0){
current+=item[0];
}else {
queue.add(item[0]);
}
n--;
}
long max = getResult(queue, current);
System.out.println(max);
}
private static long getResult(PriorityQueue<Long> queue, long current) {
if (queue.isEmpty()) {
return current;
} else {
while (!queue.isEmpty()) {
current+=Math.max(current,queue.poll());
}
return current;
}
}
} 
