用队列 Queue
package Dduo; //Bhu Bigdata 1421 //Eslipse IDE 2020-08 //JDK 1.8 //2024/5/19 import java.util.Scanner; import java.math.BigInteger; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int number; number = scan.nextInt(); int price[] = new int[number]; for(int i=0;i<number;i++) { price[i] = scan.nextInt(); } long res = 0; scan.close(); Arrays.sort(price); int t = number-1; //数据结构队列 Queue<Integer> queue = new LinkedList<>(); boolean flag = false; while(t>=0) { if(!queue.isEmpty()&&price[t]<=queue.peek()) { //如果队列非空且价格小于队列的第一个元素。queue.peek只会获取队列头部元素,不会删除。 queue.poll();//出队列 } else { if(flag) { queue.add(price[t]/2); flag = false; } else { flag = true; } res += price[t]; } t--; } System.out.print(res); } }