【Luogu P1048 Luogu P1016】采药/疯狂的采药
采药/疯狂的采药
两道模板题,分别是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;
}
完全背包程序参考
【Luogu P1048 Luogu P1016】采药/疯狂的采药的更多相关文章
- 动态规划 洛谷P1616 疯狂的采药
动态规划 洛谷P1616 疯狂的采药 同样也是洛谷的动态规划一个普及-的题目,接下来分享一下我做题代码 看到题目,没很认真的看数据大小,我就提交了我的代码: 1 //动态规划 洛谷P1616 疯狂的采 ...
- P1616 疯狂的采药
P1616 疯狂的采药 题目背景 此题为NOIP2005普及组第三题的疯狂版. 此题为纪念LiYuxiang而生. 题目描述 LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为 ...
- P1616 疯狂的采药(洛谷,动态规划递推,完全背包)
先上题目链接:P1616 疯狂的采药 然后放AC代码: #include<bits/stdc++.h> #define ll long long using namespace std; ...
- luogu P1616 疯狂的采药
题目背景 此题为NOIP2005普及组第三题的疯狂版. 此题为纪念LiYuxiang而生. 题目描述 LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的 ...
- [LUOGU] P1048 采药
题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:" ...
- 洛谷——P1616 疯狂的采药
https://www.luogu.org/problem/show?pid=1616#sub 题目背景 此题为NOIP2005普及组第三题的疯狂版. 题目描述 LiYuxiang是个天资聪颖的孩子, ...
- 疯狂的采药 洛谷p1616
题目背景 此题为NOIP2005普及组第三题的疯狂版. 题目描述 LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他 ...
- 【洛谷 P1616 疯狂的采药】
题目背景 此题为NOIP2005普及组第三题的疯狂版. 此题为纪念LiYuxiang而生. 题目描述 LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的 ...
- P1616 疯狂的采药 洛谷
题目描述 LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说 ...
随机推荐
- 编程语言分类 + python解释器的安装 + jupyter的使用(day 02整理)
目录 一.昨日内容回顾 一 计算机基础之编程 (一) 什么是编程语言 (二) 什么是编程 (三) 为什么编程 二 计算机组成 (一) CPU (二) 存储器 (三) I/O设备 (四) 多核CPU ( ...
- Core3.0的 安装与坑坑坑!!!
Core3的 SDK下载地址是:https://dotnet.microsoft.com/download/dotnet-core/3.0 ! 不要下载preview8!!!,请先下载 previe ...
- django-模板之extends(三)
/book/base.html <!DOCTYPE html> <html lang="en"> <head> <meta charset ...
- SpringBoot是如何启动的?
本文是通过查看SpringBoot源码整理出来的SpringBoot大致启动流程,整体大方向是以简单为出发点,不说太多复杂的东西,内部实现细节本文不深扣因为每个人的思路.理解都不一样,我个人看的理解跟 ...
- C语言1作业5
问题 答案 这个作业属于那个课程 C语言程序设计1 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2 我在这个课程的目的是 学习并掌握C ...
- 清华大学教学内核ucore学习系列(1) bootloader
ucore是清华大学操作系统课程的实验内核,也是一个开源项目,是不可多得的非常好的操作系统学习资源 https://github.com/chyyuu/ucore_lab.git, 各位同学可以使用g ...
- [考试反思]1013csp-s模拟测试72:距离
最近总是这个样子. 看上去排名好像还可以,但是实际上离上面的分差往往能到80分,但是身后的分差其实只有10/20分. 比上不足,比下也不怎么的. 所以虽然看起来没有出rank10,但是在总分排行榜上却 ...
- vue-router动态添加路由报错
[报错] Uncaught Error: [vue-router] route config "component" for path: /home cannot be a str ...
- P4544 [USACO10NOV]购买饲料Buying Feed
额,直接思路就dp吧.(我还想了想最短路之类的233但事实证明不行2333.....) 直入主题: 化简题意:在x轴上有n个点,坐标为xi.从原点出发,目标点为e,在途中需要收集K重量的物品,在每个点 ...
- CDQ分治学习笔记(三维偏序题解)
首先肯定是要膜拜CDQ大佬的. 题目背景 这是一道模板题 可以使用bitset,CDQ分治,K-DTree等方式解决. 题目描述 有 nn 个元素,第 ii 个元素有 a_iai.b_ibi.c_ ...