//注意范围
//f数组为价值范围;所以为1e7+10;
//而 t=1;价值1e4时 组数为1e7爆int;开longlong
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=10100,M=1e7+10;
long long n;
long long m;
long long f[M];
int main()
{
cin>>m>>n;
for(int i=0;i<n;i++)
{
int v,w;
cin>>v>>w;
for(int j=v;j<=m;j++)
f[j]=max(f[j],f[j-v]+w);
}
cout<<f[m];
return 0;
}
【无标题】洛谷P1616 疯狂的采药(dp)(滚动数组)
于 2022-05-05 16:58:27 首次发布
该博客主要介绍了如何使用动态规划解决一个涉及价值计算的问题。代码示例中展示了如何处理价值范围,并在不超过给定限制的情况下最大化总价值。动态规划数组f用于存储到每个价值的最优解,通过遍历物品价值和重量更新f数组,最终输出最大总价值。
摘要由CSDN通过智能技术生成