题意:这是一个关于小猪存钱罐的问题,给你小猪存钱罐的最初重量和装满重量,然后再给你一些金币,金币有价值与重量,求小猪装满的情况下价值最小是多少。
思路:容量很容易求出,但是问题是如何求出最小价值,那么可以想到初始化和dp条件,初始化为inf,但是dp[0][0]必须设置为0,这样是满足条件的情况。
对于完全背包又忽然理解了为什么要从w[i]开始遍历,这里的状态是在这个j下这个物品要不要装。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define inf 0x3f3f3f3f
int n,m;
int dp[1000000];
int w[510],v[510];
int main()
{
// freopen("in.txt","r",stdin);
int T;
scanf("%d",&T);
while(T--){
memset(dp,inf,sizeof(dp));
scanf("%d%d",&n,&m);
m

博客讨论了一个与小猪存钱罐相关的完全背包问题,其中目标是找到最小价值以使存钱罐装满。题目给出存钱罐的初始和满载重量,以及不同金币的价值和重量。解决思路涉及使用动态规划,初始化dp数组,特别注意dp[0][0]应设为0,表示不放入任何物品时价值为0。在遍历物品时,从重量w[i]开始考虑是否放入物品,以优化解决方案。
最低0.47元/天 解锁文章
1538

被折叠的 条评论
为什么被折叠?



