洛谷 1855 榨取kkksc03#二维费用背包#

题目

每个人可以浪费掉kkksc03的一些时间的同时消耗掉kkksc03的一些金钱以满足自己的一个愿望,所以他想知道在自己的能力范围内,最多可以完成多少同学的愿望?


分析

二维费用背包
状态转移方程: f [ i + w [ i ] ] [ j + v [ i ] ] = f [ i ] [ j ] + 1 f[i+w[i]][j+v[i]]=f[i][j]+1 f[i+w[i]][j+v[i]]=f[i][j]+1


代码

#include <cstdio>
using namespace std;
int m,g,n,f[201][201],w[201],v[201];
int main(){
    scanf("%d%d%d",&n,&m,&g);
    for (int i=1;i<=n;i++)scanf("%d%d",&w[i],&v[i]);
    for (int i=1;i<=n;i++)
    for (int j=m;j>=0;j--)
    for (int k=g;k>=0;k--){
    	int t1=j+w[i]; int t2=k+v[i];
    	if (t1>m||t2>g) continue;
        if (f[t1][t2]<f[j][k]+1) f[t1][t2]=f[j][k]+1; 
    }
    printf("%d",f[m][g]); return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值