第二题(通过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);
}
}
}