第二题(通过0%,神奇): import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.StreamTokenizer; import java.util.Comparator; import java.util.PriorityQueue; public class Main{ public static void main(String[] args) throws IOException { StreamTokenizer st=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); st.nextToken(); int N=(int)st.nval; while(N-->0){ st.nextToken(); int n=(int)st.nval; st.nextToken(); int m=(int)st.nval; PriorityQueue<int[]> queue=new PriorityQueue<>(new Comparator<int[]>() { @Override public int compare(int[] a, int[] b) { return (b[1]-b[0])/(b[1]*(b[1]+1))-(a[1]-a[0])/(a[1]*(a[1]+1)); } }); for(int i=0;i<n;i++){ st.nextToken(); int a=(int)st.nval; st.nextToken(); int b=(int)st.nval; queue.offer(new int[]{a,b}); } for(int i=0;i<m;i++){ int[] arr = queue.poll(); arr[0]++; arr[1]++; queue.offer(arr); } double ans=0;; while (!queue.isEmpty()){ int[] arr = queue.poll(); ans+=(double)arr[0]/arr[1]; } ans/=n; System.out.println(ans); } } }