洛谷 P1507 NASA的食物计划 【二维费用背包】 || 【DFS】
题目链接:https://www.luogu.org/problemnew/show/P1507
题目背景
NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安全技术问题一直大伤脑筋,因此在各方压力下终止了航天飞机的历史,但是此类事情会不会在以后发生,谁也无法保证,在遇到这类航天问题时,解决方法也许只能让航天员出仓维修,但是多次的维修会消耗航天员大量的能量,因此NASA便想设计一种食品方案,让体积和承重有限的条件下多装载一些高卡路里的食物.
题目描述
航天飞机的体积有限,当然如果载过重的物品,燃料会浪费很多钱,每件食品都有各自的体积、质量以及所含卡路里,在告诉你体积和质量的最大值的情况下,请输出能达到的食品方案所含卡路里的最大值,当然每个食品只能使用一次.
输入格式:
第一行 两个数 体积最大值(<400)和质量最大值(<400)
第二行 一个数 食品总数N(<50).
第三行-第3+N行
每行三个数 体积(<400) 质量(<400) 所含卡路里(<500)
输出格式:
一个数 所能达到的最大卡路里(int范围内)
320 350
4
160 40 120
80 110 240
220 70 310
40 400 220
550 解题思路:
比普通的01背包问题多加了一维背包总质量的限定,其实代码和01背包还是非常相似的。 二维费用背包解法
#include <bits/stdc++.h>
using namespace std; int V,M,n,dp[][]; struct Node{
int v,m,k;
}node[int(1e4+)]; int main(){
scanf("%d%d%d",&V,&M,&n);
for(int i=;i<=n;i++)
scanf("%d%d%d",&node[i].v,&node[i].m,&node[i].k);
for(int i=;i<=n;i++)
for(int j=V;j>=node[i].v;j--)
for(int g=M;g>=node[i].m;g--)
dp[j][g]=max(dp[j][g],dp[j-node[i].v][g-node[i].m]+node[i].k);
printf("%d\n",dp[V][M]);
}
DFS搜索解法
//搜索:对于每一种状态都有取和不取两种状态
//剪枝:如果当前状态下的质量已经大于M或体积已经大于V,显然就不要往下搜了 #include<iostream>
#include<cstdio>
#include<iomanip>
#include<algorithm>
#include<cstring>
using namespace std;
int n,V,M,xv[],xm[],xp[],ans=;
void dfs(int step,int nowv,int nowm,int s)//当前状态:nowm现在质量,nowv当前体积,s能总数
{
if(step==n+)
{
if(nowv<=V&&nowm<=M)
ans=max(ans,s);
return;
}
//if(nowv>V||nowm>M) return;//剪枝;
dfs(step+,nowv+xv[step],nowm+xm[step],s+xp[step]),
dfs(step+,nowv,nowm,s);//两种决策
}
int main()
{
cin>>V>>M>>n;
for(int i=;i<=n;i++)
cin>>xv[i]>>xm[i]>>xp[i];
dfs(,,,);
cout<<ans;
return ;
}
2018-05-14
洛谷 P1507 NASA的食物计划 【二维费用背包】 || 【DFS】的更多相关文章
- [洛谷P1507]NASA的食物计划 以及 对背包问题的整理
P1507 NASA的食物计划 题面 每个物品有三个属性,"所含卡路里":价值\(v\),"体积":限制1\(m_1\),以及"质量":限制 ...
- 洛谷——P1507 NASA的食物计划
https://www.luogu.org/problem/show?pid=1507#sub 题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安 全技术问题一直大伤脑筋,因此在各方压力 ...
- 洛谷P1507 NASA的食物计划
//二维费用背包 #include<bits/stdc++.h> using namespace std; ; ; ; int v1[maxn],v2[maxn],w[maxn],n,v1 ...
- 【洛谷P1507 NASA的食物计划】动态规划
分析 二维费用背包模板 AC代码 #include <bits/stdc++.h> using namespace std; const int Maxn=505; int a[Maxn] ...
- 【洛谷P1507 NASA的食物计划】
题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安全技术问题一直大伤脑筋,因此在各方压力下终止了航天飞机的历史,但是此类事情会不会在以后发生,谁也无法保证,在遇到这类航天问题时,解决方法 ...
- 洛谷 P1507 NASA的食物计划
题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安 全技术问题一直大伤脑筋,因此在各方压力下终止了航天 飞机的历史,但是此类事情会不会在以后发生,谁也无法 保证,在遇到这类航天问题时,解 ...
- 洛谷 P1509 找啊找啊找GF(复习二维费用背包)
传送门 题目背景 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见." "诶,别再见啊..." 七夕...七夕...七夕这个日子,对于sq ...
- hdu2159二维费用背包
题目连接 背包九讲----二维费用背包 问题 二维费用的背包问题是指:对于每件物品,具有两种不同的费用:选择这件物品必须同时付出这两种代价:对于每种代价都有一个可付出的最大值(背包容量).问怎样选择物 ...
- Regionals 2014 >> Asia - Taichung 7003 - A Balance Game on Trees 树形DP + 二维费用背包
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
随机推荐
- NodeJs进击,新建一个Node Server
直接新建一个server.js 然后 输入以下代码 var http = require('http') http.createServer(function(req,res){ res.writeH ...
- python - 数据描述符(class 内置 get/set/delete方法 )
数据描述符(class 内置 get/set/del方法 ): # 什么是描述符 # 官方的定义:描述符是一种具有“捆绑行为”的对象属性.访问(获取.设置和删除)它的属性时,实际是调用特殊的方法(_g ...
- Netty通信原理
Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端,它极大的简化了TCP和UDP套接字服务器等网络编程. BIO(Blocking IO):每一个请求,一个S ...
- Dubbo高可用
高可用:通过设计减少系统不能提供服务的时间 (1).zookeeper宕机 原因:zookeeper宕机 现象:zookeeper注册中心宕机,还可以消费dubbo暴露的服务. 健壮性: 监控中心宕掉 ...
- Python 3.x 格式化输出字符串 % & format 笔记
Python 3.x 格式化输出字符串 % & format 笔记 python格式化字符串有%和{}两种 字符串格式控制符. 字符串输入数据格式类型(%格式操作符号) %%百分号标记 %c字 ...
- Python3学习笔记23-StringIO和BytesIO
StringIO 很多时候数据读取不一定是文件,也可以在内存中 StringIO顾名思义就是在内存中读写str 要把str写入StringIO,我们需要先创建一个StringIO,然后像文件一样写入即 ...
- jython获取was5.1的jvm监控参数
perfName = AdminControl.completeObjectName ('type=Perf,process=server1,node=TSC,cell=TSC,*') perfONa ...
- dellR720服务器设置光盘引导流程安装cenos7
1.开机,按F10,进入系统引导界面,选择加载系统选项,并选择redhat 7.1选项 系统提示不支持,选择仍然继续,根据提示设置BIOS设置启动,重启 2.根据提示按F11进入BIOS启动设置,选择 ...
- Java基础98 gson插件的使用
1.要用到的包 2.实例 实体类 people package com.shore.entity; /** * @author DSHORE/2019-4-21 * */ public class P ...
- 造轮子和用轮子:快速入门JavaScript模块化
造轮子和用轮子:快速入门JavaScript模块化 前言 都说“不重复造轮子”,就像iPhone——它除了打电话还可以播放音乐——但是工程师不用从零开始做一个音乐播放功能,也许只要在iPhone的系统 ...