分析:这道题目和上道题目非常像,只不过需要升序排列;而且要选择单价最小的,并且可以买到小数的大米重量。
代码:
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Scanner;
class Node implements Comparable{
int p;
int h;
public int compareTo(Object o){
Node n = (Node)o;
return this.p-n.p;
}
}
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int c;
c= in.nextInt();
while(0 != c--){
int money ,n;
money = in.nextInt();
n = in.nextInt();
Node[] arr = new Node[n];
for (int i = 0; i < n; i++) {
arr[i]= new Node();
arr[i].p = in.nextInt();
arr[i].h = in.nextInt();
}
Arrays.sort(arr,0,n);
double sum=0;
for (int i = 0;i<n ;i++ ) {
if(money==0) break;
if(money>=arr[i].p*arr[i].h){
sum+= arr[i].h;
money-=arr[i].p*arr[i].h;
}
else{
sum += (double)money/(arr[i].p);
money = 0;
}
}
DecimalFormat df = new DecimalFormat( "0.00");
System.out.println(df.format(sum));
}
}
}