简单的贪心问题,直接上源码
package ny;
import java.util.Arrays;
import java.util.Scanner;
public class Ny106_20130415_2137 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
Package[] pack = null;
int group, v, w, s, m;
group = in.nextInt();
while(group-->0){
s = in.nextInt();
m = in.nextInt();
pack = new Package[s];
for(int i = 0; i < s; ++i){
v = in.nextInt();
w = in.nextInt();
pack[i] = new Ny106_20130415_2137().new Package(v,w);
}
Arrays.sort(pack);
int i = 0,maxValue = 0;
for(i = 0; i < pack.length && m >= pack[i].getW(); ++i){
maxValue += pack[i].getV()*pack[i].getW();
m -= pack[i].getW() ;
}
if(m > 0 && i < pack.length){
maxValue += m * pack[i].getV();
}
System.out.println(maxValue);
}
}
private class Package implements Comparable<Package>{
private int v;
private int w;
public Package(int v, int w){
this.v = v;
this.w = w;
}
public int getV() {
return v;
}
public void setV(int v) {
this.v = v;
}
public int getW() {
return w;
}
public void setW(int w) {
this.w = w;
}
@Override
public int compareTo(Package p) {
// TODO Auto-generated method stub
return p.getV() - this.getV();
}
}
}