zoukankan
html css js c++ java
hdu1114 PiggyBank 完全背包
/*设d[k]是重量为k时所对应的最小价值,重量不可能凑成k时,置其为-1,表示无穷大
状态转移方程:
dp[k] = 0…………k = 0;
dp[k] = min(value[j] + dp[k - weight[j]])…………k >= weight[j];
其中,1=< j <= n,若dp[k - weight[j]]) = -1,表示它是无穷大,重量不能达到
本题求的是最小,模板需要做一些细微的改动
/*完全背包 有N种物品和一个容量为V的背包,每种物品都有无限件可用。 第i种物品的费用是c[i],价值是w[i]。 令f[i][v]表示前i种物品恰放入一个容量为v的背包的最大权值 f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k*c[i]<=v} 优化:f[i][v]=max{f[i-1][v],f[i][v-c[i]]+w[i]}*/ void CompletePack(int cost, int value) { int v; for( v = cost; v <= V; v++) { if(dp[v-cost] == -1)continue; if(dp[v] == -1)dp[v] = dp[v-cost]+value; else dp[v] = min( dp[v], dp[v-cost]+value); } }
本题的程序:
#include "Bag.h" #include <iostream> using namespace std; int main() { int t, e, f, i; cin>>t; while (t--) { cin>>e>>f>>N; V = f - e; for (i = 0; i < N; i++) cin>>v[i]>>c[i]; memset(dp, -1, sizeof(dp)); dp[0] = 0; for(i = 0; i < N; i++) CompletePack(c[i], v[i]); if (dp[V] == -1) cout << "This is impossible.\n"; else cout << "The minimum amount of money in the piggy-bank is " << dp[V] << ".\n"; } return 0; }
查看全文
相关阅读:
Codeforces Round #551 (Div. 2) 题解
【BZOJ5496】[十二省联考2019]字符串问题(后缀树)
省选题记录
【BZOJ5495】[十二省联考2019]异或粽子(主席树,贪心)
Codeforces Global Round 2
Android Studio安装使用图文教程(转)
JAVA基础学习day15--集合二 TreeSet和泛型
AndroidDevTools下载地址
JAVA基础学习day14--集合一
JAVA----编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符
原文地址:https://www.cnblogs.com/windmissing/p/2559899.html
最新文章
Java 复制PDF文档的2种方法
[BJOI2019]排兵布阵(动态规划)
[BJOI2019]勘破神机(斯特林数,数论)
[BJOI2019]奥术神杖(分数规划,动态规划,AC自动机)
【CF932E】Perpetual Subtraction(NTT,线性代数)
【BZOJ2721】樱花(数论)
【LOJ#2402】[THUPC2017]天天爱射击(整体二分)
【CF1151E】Number of Components
【CF1151F】Sonya and Informatics(动态规划,矩阵快速幂)
【BZOJ5507】[GXOI/GZOI2019]旧词(树链剖分,线段树)
热门文章
【BZOJ5506】[GXOI/GZOI2019]旅行者(最短路)
【BZOJ5505】[GXOI/GZOI2019]逼死强迫症(矩阵快速幂)
【BZOJ5503】[GXOI/GZOI2019]宝牌一大堆(动态规划)
【BZOJ5502】[GXOI/GZOI2019]与或和(单调栈)
[ZJOI2019]麻将(动态规划,自动机)
Educational Codeforces Round 62
【BZOJ5499】[2019省队联测]春节十二响(贪心)
【BZOJ5498】[十二省联考2019]皮配(动态规划)
AtCoder Grand Contest 013
AtCoder Grand Contest 012
Copyright © 2011-2022 走看看