import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int V=sc.nextInt(); int N=sc.nextInt(); int[]dp=new int[V+1]; for (int i = 0; i < N; i++) { int w=sc.nextInt(); int v=w; int s=1; for (int j = 1; j <=s; s-=j,j*=2) { for (int k = V; k >=j*w; k--) { dp[k]=Math.max(dp[k], dp[k-j*w]+j*v); } } } System.out.println(V-dp[V]); } }
0.0分
1 人评分
C语言训练-排序问题<1> (C语言代码)浏览:601 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:520 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:635 |
简单的for循环浏览:1410 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:691 |
WU-输入输出格式练习 (C++代码)浏览:1082 |
WU-整数平均值 (C++代码)浏览:1244 |
WU-C语言程序设计教程(第三版)课后习题12.1 (C++代码)浏览:940 |
IP判断 (C语言描述,蓝桥杯)浏览:1095 |
1642题解浏览:715 |