【t060】可怜的波特

Time Limit: 1 second
Memory Limit: 128 MB

【问题描述】

哈里波特在姨夫家遭受非人待遇,他被迫做很多事。有一次,姨夫有给了他一大堆家务。哈里知道每件做完家务的时间,重要程度,
还知道总时间与任务总数,他必须尽量合理的安排使他在规定时间内完成的重要程度最大。

【输入格式】

第一行,t,m(t,m<=10000)表示哈里波特的时间和姨夫要他做的家务数。
接下来m行,每行2个值表示该任务所须的时间与重要度(均小于5000)。 

【输出格式】

一行di表示完成的任务重要数总和。

Sample Input

70 3
71 100
69 1
1 2



Sample Output

3
【题解】
还能有更裸的0/1背包吗?逆序枚举时间。最后输出f[m]。做得我要吐血了。
【代码】
#include <cstdio>

int m,n,w[10010],c[10010],f[10010];

int main()
{
	//freopen("F:\\rush.txt","r",stdin);
	scanf("%d%d",&m,&n); //输入时间上限和物品个数 
	for (int i = 1;i <= n;i++) //输入n个物品的信息 
		scanf("%d%d",&w[i],&c[i]);
	for (int i = 1;i <= n;i++) //进行0/1背包操作 
		for (int j = m;j >= w[i];j--)
			if(f[j] < f[j-w[i]] + c[i])
				f[j] = f[j-w[i]] + c[i];
	printf("%d",f[m]); //最后输出所用时间不超过m的最大价值度 
	return 0;	
}


转载于:https://www.cnblogs.com/AWCXV/p/7632371.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值