/** * @作者: gx_143 * @创建时间: 2017-4-30上午08:56:09 */ public class T7完全背包 {
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int[] out=new int[n]; for (int i = 0; i < out.length; i++) { int m=sc.nextInt(); int v=sc.nextInt(); int[] need=new int[m+1]; int[] value=new int[m+1]; for (int j = 1; j < value.length; j++) { need[j]=sc.nextInt(); value[j]=sc.nextInt(); } out[i]=f(m,v,need,value); } for (int i = 0; i < out.length; i++) { if(out[i]==-1) System.out.println("NO"); else System.out.println(out[i]); } }
private static int f(int m, int v, int[] need, int[] value) { int[] dp=new int[v+1]; for (int i = 1; i < dp.length; i++) { dp[i]=-10000000; } for (int i = 1; i <= m; i++) { for (int j = 0; j <= v; j++) { if(j>=need[i]) dp[j]=Math.max(dp[j], dp[j-need[i]]+value[i]); } } if(dp[v]<0) return -1; return dp[v]; } }