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; }
查看全文
相关阅读:
window下eclipse4.5+hadoop2.6.1开发环境配置
sqoop1.4.6从mysql导入hdfshivehbase实例
sqoop1.9.7安装和使用
sqoop1.4.6导出oracle实例
sqoop1.4.6配置安装
java 操作hbase1.2
hbase-1.2.5完全分布式部署
hadoop2.6环境中部署hive1.2.2的错误
hive 创建表和导入数据实例
hive1.2.2部署
原文地址:https://www.cnblogs.com/windmissing/p/2559899.html
最新文章
【XSY2753】Lcm 分治 FWT FFT 容斥
【XSY2754】求和 莫比乌斯反演 杜教筛
【XSY2774】学习 带花树
【XSY2773】基因 后缀平衡树 树套树
【XSY2772】数列 特征多项式 数学
【XSY2745】装饰地板 状压DP 特征多项式
【XSY2744】信仰圣光 分治FFT 多项式exp 容斥原理
【XSY1262】【GDSOI2015】循环排插 斯特林数
【XSY2767】朋友 广义后缀自动机 网络流
【XSY2741】网格 分治 LCT 并查集
热门文章
【XSY2779】最小表示串 KMP DP polya定理
白兔的刁难 IDFT
求矩阵的特征多项式
【XSY2731】Div 数论 杜教筛 莫比乌斯反演
【XSY2032】简单粗暴的题目 组合数
【XSY2727】Remove Dilworth定理 堆 树状数组 DP
【BZOJ3997】【TJOI2015】组合数学 Dilworth定理 DP
【XSY2701】异或图 线性基 容斥原理
【XSY2703】置换 数学 置换 DP
【XSY2732】Decalcomania 可持久化线段树 分治
Copyright © 2011-2022 走看看