import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int M=sc.nextInt();//T int N=sc.nextInt();//M int[]dp=new int[M+1]; for (int i = 0; i < N; i++) { int w=sc.nextInt(); int v=sc.nextInt(); int s=1; for (int j = 1; j <=s; s-=j,j*=2) { for (int k = M; k >=j*w; k--) { dp[k]=Math.max(dp[k], dp[k-j*w]+j*v); } } if(s>0){ for (int k = M; k >=s*w; k--) { dp[k]=Math.max(dp[k], dp[k-s*w]+s*v); } } } System.out.println(dp[M]); } }
0.0分
0 人评分
gets函数前有scanf读取时候,会读取缓存回车导致出错!!!浏览:1100 |
点我有惊喜!你懂得!浏览:2072 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:692 |
C语言训练-自由落体问题 (C语言代码)浏览:1738 |
C语言训练-计算:t=1-1/(2*2)-1/(3*3)-...-1/(m*m) (C语言代码)浏览:785 |
剪刀石头布 (C语言代码)浏览:1755 |
K-进制数 (C语言描述,蓝桥杯)浏览:925 |
出圈】指针malloc版浏览:355 |
简单的a+b (C语言代码)浏览:531 |
矩形面积交 (C语言代码)浏览:1314 |