import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); int M=sc.nextInt(); int N=sc.nextInt(); int[]dp=new int[M+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 = 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(M-dp[M]); } }
0.0分
1 人评分
母牛的故事 (C语言代码)浏览:1748 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:762 |
破解简单密码 (C语言代码)浏览:1863 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:689 |
简单的a+b (C语言代码)浏览:827 |
数组输出 (C语言代码)错误???浏览:602 |
A+B for Input-Output Practice (II) (C语言代码)浏览:1043 |
C语言程序设计教程(第三版)课后习题5.7 (Java代码)浏览:910 |
【排队买票】 (C语言代码)浏览:944 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:544 |