import java.util.PriorityQueue; import java.util.Scanner; import java.util.TreeMap; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub PriorityQueue<Integer> queue=new PriorityQueue<>(); Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int m=scanner.nextInt(); int max=0; for (int i = 0; i < n; i++) { int x=scanner.nextInt(); queue.add(x); if(x>max)max=x; } for (int i = 0; i < m; i++) { int b=scanner.nextInt(); int x=queue.poll(); queue.add(x+b); if(x+b>max)max=x+b; System.out.println(max); } } }
这题我试了好几种方法,只有只用目前这种优先队列的才能过,连TreeMap都只能过17个测试点。其实我一开始用的就是优先队列,但是我不知道如何去求优先队列的最大值,我想过遍历它,把它转换为数组,都不行,要么超时,要么根本行不通,然后我看了题解,学会了通过创建一个max变量,在每一次添加数据的时候,判断添加的值是否大于max,如果是就更新它,以此来获取最大值,这一点我感觉非常妙