本文共 1287 字,大约阅读时间需要 4 分钟。
import java.util.ArrayList;import java.util.Collections;import java.util.Scanner;public class Main { public static void main(String[] args) { new Main().run(); } public void run() { Scanner in = new Scanner(System.in); int t = in.nextInt(); while(t-- > 0) { int n = in.nextInt(); ArrayListlist = new ArrayList<>(); boolean []vis = new boolean[10000];//这个要开大点 和 n不是一回事 for(int i = 0; i < n; i++ ) {//@1注意这些数据一定要分开读 不能直接new Node(d,s); int d = in.nextInt();//因为题目是先读完d后读s的 list.add(new Node(d)); } for(int i = 0; i < n; i++ ) {//@2 int s = in.nextInt(); list.get(i).s = s; } Collections.sort(list);// for(Node a:list) {// System.out.println(a.s);// } int sum = 0, j; for(int i = 0; i < n; i++ ) { for(j = list.get(i).d; j > 0; j--) { if(!vis[j]) { vis[j] = true; break; } } if(j == 0) { sum += list.get(i).s; } } System.out.println(sum); } }}class Node implements Comparable { int d, s; public Node(int d) {//构造函数无类型 this.d = d; } @Override public int compareTo(Node o) { if(s == o.s) { return d < o.d ? -1 :1; } else if(s < o.s){ return 1; } else return -1; }}
转载地址:http://flimi.baihongyu.com/