动态规划——疯狂的采药

动态规划——疯狂的采药

P1616 疯狂的采药

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6DCJIi87-1648378711553)(C:\Users\86180\AppData\Roaming\Typora\typora-user-images\image-20220327185604982.png)]

解题思路


01背包的另一种形式,这里我们只需要将上面的倒序改成正序即可(还是从w[i]截断)

代码实现

#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
#define rep(i,s,n) for(long long i=s;i<n;i++)
#define reb(i,d,n) for(long long i=n;i>=d;i--)
using namespace std;
const int SIZE = 10000005;
struct data
{
	long long t;
	long long m;
};
struct data herb[10001];
long long tt, temp;
long long dp[SIZE];

signed main()
{
	ios::sync_with_stdio(false);
	memset(dp, 0, sizeof(dp));
	cin >> tt >> temp;
	rep(i, 0, temp)
		cin >> herb[i].t >> herb[i].m;
	long long now = tt;

	rep(i, 0, temp)
	{
		rep(j, herb[i].t, tt + 1)
		{
			dp[j] = max(dp[j], dp[j - herb[i].t] + herb[i].m);

		}
	}
	cout << dp[tt];

	return 0;

}

注意

1 0 7 10^7 107应该是有7个0

一定要开long long !!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值