洛谷 P1049 装箱问题(01背包)

一道水题,但看到好久没有发博客了,再一看是一道noip普及组t4,就做了。


题目链接

https://www.luogu.org/problemnew/show/P1049

解题思路

  一道裸的01背包,注意价值和重量是一个东西,且最后输出剩余的体积。

  随随便便二维就AC了,懒得写一维。

AC代码

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cmath>
 4 #include<cstdio>
 5 #include<cstring>
 6 #include<cstdlib>
 7 #include<queue>
 8 #include<set>
 9 #include<map>
10 #include<vector>
11 #include<iomanip>
12 #include<ctime>
13 #include<stack>
14 using namespace std;
15 int n,v,w[35],dp[35][20005];
16 int main()
17 {
18     //freopen("","r",stdin);
19     //freopen("","w",stdout);
20     cin>>v>>n;
21     for(int i=1;i<=n;i++){
22         cin>>w[i];
23     }
24     for(int i=1;i<=n;i++){
25         for(int j=1;j<=v;j++){
26             if(j<w[i]) dp[i][j]=dp[i-1][j];
27             else dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+w[i]);
28         }
29     }
30     cout<<v-dp[n][v];
31     //fclose(stdin);
32     //fclose(stdout);
33     return 0;
34 }

//NOIP2001普及组t4

posted @ 2019-07-21 12:44  尹昱钦  阅读(411)  评论(0编辑  收藏  举报