【Luogu P1048 Luogu P1016】采药/疯狂的采药
2024-09-01 17:17:02
采药/疯狂的采药
两道模板题,分别是0-1背包和完全背包。
0-1背包
二维:dp[i][j]=max(dp[i-1][j-time[i]]+v[i],dp[i-1][j]);
由于i的状态由i-1的状态转移而来,那么可以省去物品的维度。
但是重量/容积维度的循环j必须倒序进行,否则可能使物品被重复选。
大家可以自己思考一下为什么。
一维:dp[j]=max(dp[j-time[i]]+v[i],dp[j]);
#include<iostream>
#include<cstdio>
using namespace std;
int dp[1001][1001],t,m,time[1001],v[1001];
int main()
{
cin>>t>>m;
for (int i=1;i<=m;i++) cin>>time[i]>>v[i];
for (int i=1;i<=t;i++) dp[0][i]=0;
for (int i=1;i<=m;i++)
for (int j=t;j>=0;j--)
if (j>=time[i]) dp[i][j]=max(dp[i-1][j-time[i]]+v[i],dp[i-1][j]);
else dp[i][j]=dp[i-1][j];
cout<<dp[m][t];
return 0;
}
二维0-1背包做法程序参考
#include<iostream>
#include<cstdio>
using namespace std;
int dp[1001],t,m,time[1001],v[1001],max1;
int main()
{
cin>>t>>m;
for (int i=1;i<=m;i++) cin>>time[i]>>v[i];
for (int i=1;i<=m;i++)
for (int j=t;j>=time[i];j--)
dp[j]=max(dp[j-time[i]]+v[i],dp[j]);
cout<<dp[t];
return 0;
}
一维0-1背包做法程序参考
完全背包
在0-1背包中的重量/容积维度倒序循环是为了防止物品被重复选。那么其实直接将其改成顺序循环即可。
当然也可以加多一重循环,枚举物品选用的个数,但是这个做法会TLE。
#include<iostream>
#include<cstdio>
using namespace std;
int dp[100001],t,m,time[100001],v[10001];
int main()
{
cin>>t>>m;
for (int i=1;i<=m;i++) cin>>time[i]>>v[i];
for (int i=1;i<=t;i++) dp[i]=0;
for (int i=1;i<=m;i++)
for (int j=time[i];j<=t;j++)
dp[j]=max(dp[j-time[i]]+v[i],dp[j]);
cout<<dp[t];
return 0;
}
完全背包程序参考
最新文章
- HTML5新标签 w3c
- 16位汇编 多文件 intel汇编 编译器masm5.0 调用子程序库即静态库的自定义函数 WINDOWS
- salesforce 零基础学习(十六)Validation Rules &; Date/time
- WPF线程(Step2)&mdash;&mdash;BackgroundWorker
- button hot key 热键
- 动态链接库(DLL)总结
- ajax XML
- Gulp-前端进阶A-2
- 教你如何利用xml格式的sitemap文件做好SEO
- Web网站压力测试工具
- Sass介绍及入门教程
- OpenCV 通过 MFC 的 Picture Control 控件操作图像
- 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)
- memcached内存管理
- uva10003 区间DP
- GitHub上最火的Android开源项目整理
- JSP编译成Servlet(四)JSP与Java行关系映射
- Python 命令行(CLI)基础库
- sybase central 报 NullPointerException 解决
- 深入理解JAVA虚拟机(内存模型+GC算法+JVM调优)
热门文章
- javascript核心基础总结
- 对于Serializable的理解
- VBoxManage.exe: error: Failed to instantiate CLSID_VirtualBox w/ IVirtualBox, CL SID_VirtualBox w/ IUnknown works.
- mybatis-spring 启动过程和调用过程
- 哪种方式更适合在React中获取数据?
- [2018-01-12] laravel--ORM
- Lost My Music:倍增实现可持久化单调栈维护凸包
- %%%GXZ大佬回关
- 通俗易懂了解Vue组件的生命周期
- UiPath之如何打印PDF