HDU2159 研发费用背包

主题链接:FATE

状态转移方程:

dp[ren][num] =max(dp[ren-耐久值][num-1]+ 经验值,dp[ren][num])

dp表示:当前忍耐度ren下杀敌数为num的经验值

枚举分别枚举 全部怪物种类、耐久度、杀怪数

最后在从小到达枚举消耗的耐久度就可以

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cstdlib>
const int INF = 1e7;
using namespace std;
int dp[105][105],cost[600][2];
int max(int x,int y)
{
    if(x > y)
        return x;
        else
    return y;
}
int min(int x,int y)
{
    if(x > y)
        return y;
        else
    return x;
}
int main()
{
    int n,m,k,s;
    while(~scanf("%d%d%d%d",&n,&m,&k,&s))
    {
        for(int i = 1;i<=k;i++)
            { scanf("%d%d",&cost[i][0],&cost[i][1]); }

            memset(dp,0,sizeof(dp));
            int i,ren,num,ans = -1;
        for( i = 1;i<=k;i++)
        {
            for( ren = cost[i][1];ren<=m;ren++)
            {
                for( num = 1;num<=s;num++)
                {
                    if(dp[ren][num] < dp[ren-cost[i][1]][num-1]+ cost[i][0])
                        dp[ren][num] = dp[ren-cost[i][1]][num-1] + cost[i][0];
                }
            }
        }
        for(int i = 1;i<=m;i++)
        {
            if(dp[i][s] >=n)
            {
                ans = m - i;
                printf("%d\n",ans);
                break;
            }
        }
        if(ans ==-1)
            printf("%d\n",ans);
    }
    return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-10-21 06:21:29

HDU2159 研发费用背包的相关文章

HDU2159 二维费用背包

题目链接:FATE 状态转移方程: dp[ren][num] =max(dp[ren-耐久值][num-1]+ 经验值,dp[ren][num]) dp表示:当前忍耐度ren下杀敌数为num的经验值 枚举分别枚举 所有怪物种类.耐久度.杀怪数 最后在从小到达枚举消耗的耐久度即可 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <

hdu--2159--二维费用背包&lt;一维错误解法&gt;

这题 还好 我A了之后 习惯性地去看了下 discuss  然后发现 基本上所有人的解法都在说 二维费用完全背包... 还好 看到一个人 是和我一样的用 一维 完全背包 加一个计数的cnt数组去解决的... 还好 在那边看到了一个人的质疑 并给出了一组数据  果然 一维的不能通过=-=那就只能 去学下 二维费用背包了...擦 这名字好长啊 因为 当时 我背包九讲只学到了01 完全 多重 后面就没学了 ... 二维费用背包要是一般的话 很简单的 就是多了一层for而已  而且假如这个数组是dp[

洛谷 P1509 找啊找啊找GF(复习二维费用背包)

传送门 题目背景 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见." "诶,别再见啊..." 七夕...七夕...七夕这个日子,对于sqybi这种单身的菜鸟来说是多么的痛苦...虽然他听着这首叫做"找啊找啊找GF"的歌,他还是很痛苦.为了避免这种痛苦,sqybi决定要给自己找点事情干.他去找到了七夕模拟赛的负责人zmc MM,让她给自己一个出题的任务.经过几天的死缠烂打,zmc MM终于同意了. 但是,拿到这个任务的sqy

codevs1959拔河比赛(二维费用背包)

1959 拔河比赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 一个学校举行拔河比赛,所有的人被分成了两组,每个人必须(且只能够)在其中的一组,要求两个组的人数相差不能超过1,且两个组内的所有人体重加起来尽可能地接近. 输入描述 Input Description 数据的第1行是一个n,表示参加拔河比赛的总人数,n<=100,接下来的n行表示第1到第n个人的体重,每个人的体重都是整数(1<=weight<=450).

POJ2184Cow Exhibition(二维费用背包)

Cow Exhibition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9067   Accepted: 3441 Description "Fat and docile, big and dumb, they look so stupid, they aren't much fun..." - Cows with Guns by Dana Lyons The cows want to prove to t

HDU FATE (完全背包+有限取次)(二重费用背包)

 FATE Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务.久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级.现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到相应的经验,并减掉相应的忍耐度.当忍耐度降到0或者0以下时,xhd就不会玩这游戏.xhd还说了他最多只杀s只怪.请问他能升掉这最后一级吗? Input 输入数据有多组,对于每组数据第一行输入n

研发费用调整利润

研发费是资本化还是费用化,其实本质的区别就在于前者(资本化)是算入资产负债表中,逐渐来摊销费用. 而后者(费用化)则是算入利润表中(的管理费用),直接体现在当季利润中.所以通过资本化的处理方式,确实可以提高当季的净利润水平. 研发费用资本化 就是将研究开发费用计入资产负债表的开发支出中,开发支出资本化可以减少企业的费用,从而多报告净利润,但代价是减少企业的现金.开发支出资本化的时候,相应的现金流在现金流量表中计入“构建固定资产.无形资产和其他长期资产所支付的现金”项目,属于投资活动现金流出.而开

hdu3496+poj1948(二维费用背包)

Watch The Movie Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 5106    Accepted Submission(s): 1614 Problem Description New semester is coming, and DuoDuo has to go to school tomorrow. She dec

研发费用资本化 调节利润

研发费用资本化:就是将研究开发费用计入资产负债表的开发支出中,开发支出资本化可以减少企业的费用,从而多报告净利润,但代价是减少企业的现金.研发费用资本化的时候,相应的现金流在现金流量表中计入“构建固定资产.无形资产和其他长期资产所支付的现金”项目,属于投资活动现金流出. 研发支出费用化:就是将研发费用计入利润表中的费用中,增加了当期的费用,减少了当期利润.开发支出完全费用化的时候,相应的现金流出在经营性现金流确认,因此,开发支出资本化可以夸大经营性现金流. “研发费是资本化还是费用化,其实本质的