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,如果是就更新它,以此来获取最大值,这一点我感觉非常妙



京公网安备 11010502036488号