hdu 2159 二维完全背包
来源:互联网 发布:服装cad制版软件 编辑:程序博客网 时间:2024/05/18 01:50
背景:二维数组为限制条件的完全背包,1Y。
思路:转移方程:F[i][j]=max{F[i][j],F[i-1][j-C[k]+W[k]},F[i][j]为在i为最大人数为i,最大忍耐度为j的情况下所能达到的最大经验值。一旦经验值达到目标要求经验值,就记录当前罪恶值,找出所有大到经验要求罪恶值中的最小罪恶值即可。
思路:转移方程:F[i][j]=max{F[i][j],F[i-1][j-C[k]+W[k]},F[i][j]为在i为最大人数为i,最大忍耐度为j的情况下所能达到的最大经验值。一旦经验值达到目标要求经验值,就记录当前罪恶值,找出所有大到经验要求罪恶值中的最小罪恶值即可。
学习:进化仍然是转移方程的确立,背包类问题,按照模型进行变换就好。找到限制条件和物品选择,对限制条件进行拆分为每种可能的离散块。
我的代码:
#include<cstdio>#include<iostream>#include<cstring>using namespace std;int w[109],c[109],F[109][109];int main(void){ int n,m,k,s,ans; while(scanf("%d%d%d%d",&n,&m,&k,&s) == 4){ ans=1e9; for(int i=0;i < k;i++) scanf("%d%d",&w[i],&c[i]); memset(F,0,sizeof(F)); for(int t=0;t < k;t++){ for(int j=c[t];j <= m;j++){ for(int i=1;i <= s;i++){ F[i][j]=max(F[i][j],F[i-1][j-c[t]]+w[t]); if(F[i][j] >= n){ if(j < ans) ans=j; } } } } if(ans <= m) printf("%d\n",m-ans); else printf("-1\n"); } return 0;}
0 0
- hdu 2159 二维背包 完全
- hdu 2159 二维完全背包
- HDU 2159 二维完全背包
- hdu 2159 二维完全背包
- hdu 2159(二维完全背包)
- hdu 2159 二维完全背包
- HDU 2159 二维完全背包
- HDU 2159 FATE【二维背包+完全背包】
- hdu 2159 FATE(二维背包+完全背包)
- FATE hdu 2159 二维的完全背包
- hdu 2159 fate(二维完全背包)
- hdu 2159 二维费用完全背包
- HDU 2159 FATE(二维完全背包)
- 【hdu 2159】 FATE 二维费用完全背包
- hdu 2159 dp(二维完全背包)
- hdu 2159 fate(二维完全背包)
- HDU 2159 FATE (二维费用完全背包)
- hdu 2159 FATE(二维完全背包)
- 总变分(Total Variation)最小化方法
- hdu 1541 Stars 树状数组模板题
- Android照片墙完整版,完美结合LruCache和DiskLruCache
- 学习selenium+python:selenium2+python2.7环境安装
- 机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)
- hdu 2159 二维完全背包
- FlappyBird开发总结(八)——MainScene场景
- 跟我一步一步学爬虫---403禁止访问(三)
- iOS中assign、copy 、retain等关键字的含义
- 解决新版ADT创建项目时出现appcompat_v7并报错
- 能量项链 hrbustoj 1376 区间dp
- UIImageView和UIImage,CGContextRef 的一些知识点
- HDU 1547 Bubble Shooter
- linux查看指定端口号被占用情况