HDOJ(HDU).2159 FATE (DP 带个数限制的完全背包)

题意分析

与普通的完全背包大同小异,区别就在于多了一个个数限制,那么在普通的完全背包的基础上,增加一维,表示个数。同时for循环多写一层即可。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define nmax 105
using namespace std;
int dp[nmax][nmax];
struct item{
int exp;
int ence;
double rate;
}a[nmax];
bool cmp(item a, item b)
{
return a.rate>b.rate;
}
void output(int n, int m)
{
printf("--------------DEBUG--------------\n");
for(int i = 0;i<=10;++i){
for(int j = 0 ;j<=10 ;++j) {
printf("%3d",dp[i][j]);
}
printf("\n");
}
printf("--------------DEBUG--------------\n");
}
int main()
{
//freopen("in.txt","r",stdin);
int n,m,k,s;
while(scanf("%d%d%d%d",&n,&m,&k,&s)!= EOF){
memset(dp,0,sizeof(dp));
for(int i =1; i<=k; ++i) {scanf("%d %d",&a[i].exp,&a[i].ence); a[i].rate = a[i].exp / a[i].ence;}
//sort(a+1,a+1+k,cmp);
for(int i =1; i<=k; ++i) {
for(int j = a[i].ence; j<=m; ++j)
for(int l = 1; l<=s;++l)
dp[j][l] = max(dp[j][l],dp[j-a[i].ence][l-1] +a[i].exp);
}
//output(k,s);
//printf("%d %d %d\n",m,s,n);
if(dp[m][s]>=n){
for(int i =0;i<=m;++i)
if(dp[i][s]>=n){
printf("%d\n",m-i);
break;
}
}else{
printf("-1\n");
}
}
return 0;
}

HDOJ(HDU).2159 FATE (DP 带个数限制的完全背包)的更多相关文章

  1. HDU 2159 FATE (dp)

    题目链接 Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务.久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最 ...

  2. HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化)

    HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化) 题意分析 先把每种硬币按照二进制拆分好,然后做01背包即可.需要注意的是本题只需要求解可以凑出几种金钱的价格,而不需要输出种数 ...

  3. HDOJ(HDU).1059 Dividing(DP 多重背包+二进制优化)

    HDOJ(HDU).1059 Dividing(DP 多重背包+二进制优化) 题意分析 给出一系列的石头的数量,然后问石头能否被平分成为价值相等的2份.首先可以确定的是如果石头的价值总和为奇数的话,那 ...

  4. HDOJ(HDU).1114 Piggy-Bank (DP 完全背包)

    HDOJ(HDU).1114 Piggy-Bank (DP 完全背包) 题意分析 裸的完全背包 代码总览 #include <iostream> #include <cstdio&g ...

  5. HDU 2159 FATE(二维费用背包)

    FATE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  6. HDU 2159 FATE 完全背包

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2159 FATE Time Limit: 2000/1000 MS (Java/Others)Memo ...

  7. HDU 2159 FATE (dp)

    FATE Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

  8. HDU 2159 FATE(有选择物品总个数限制的完全背包,经典!!)

    FATE Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  9. HDU - 2159 FATE(二维dp之01背包问题)

    题目: ​ 思路: 二维dp,完全背包,状态转移方程dp[i][z] = max(dp[i][z], dp[i-1][z-a[j]]+b[j]),dp[i][z]表示在杀i个怪,消耗z个容忍度的情况下 ...

随机推荐

  1. java中的比较:instanceof、equals(hashcode)、==

    import javassist.expr.Instanceof; class Person{ String s; Person(String s){ this.s=s; } } class Man ...

  2. cf#516A. Make a triangle!(三角形)

    http://codeforces.com/contest/1064/problem/A 题意:给出三角形的三条边,问要让他组成三角形需要增加多少长度 题解:规律:如果给出的三条边不能组成三角形,那答 ...

  3. grep命令及正则

    文本查找 grep,egrep,fgrep grep :Global Research 根据模式搜索文本,并将符合模式的文本行显示出来 模式:Pattern,文本字符和正则的元字符组合而成匹配条件 g ...

  4. 【SpringCloud】第五篇: 路由网关(zuul)

    前言: 必需学会SpringBoot基础知识 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选. ...

  5. Python中一些糟糕的语法!你遇到过吗?还知道那些?

    Python是一门语法优雅,功能强大,开发效率高,应用领域广泛的解释性语言. 其有非常多的优点,但是也并不是完美的,除了大家都知道的执行速度不够快,Python2和Python3的兼容问题,以及GIL ...

  6. Dreamweaver CS5网页制作教程

    说到Dreamweaver这个网页制作神器,不由得想起在学校里上的选修课,那是的我们只知道 table 布局,只知道构建网站最方便的是使用“所见即所得”编辑器.回忆一下,真的是很怀旧啊! 虽说咱现在大 ...

  7. scatter注记词

    say illness thumb ginger brass atom twenty omit fine thought staff poverty

  8. 【转】Expressions versus statements in JavaScript

    原文地址:http://www.2ality.com/2012/09/expressions-vs-statements.html Update 2012-09-21: New in Sect. 4: ...

  9. phpcms 最多上传 10 个附件 解决办法

    修改文件:/phpcms/libs/classes/form.class.php

  10. [Redis]在.NET平台下的具体应用

    一.安装第三方驱动 PM> Install-Package ServiceStack.Redis 二.使用C#语言调用类库访问Redis