NASA的食物计划

题目传送门

题目告诉我们要在体积和重量都不超过的情况下输出最大卡路里,稍微思考一下就可以发现这题是一道01背包的变形题(01背包不会的点这里)。

并且01背包需要空间优化。

那我们就照dp的角度去想

动态转移方程

\[dp[i][j]表示使用质量为i,体积为j时的最大卡路里
\]
\[dp[i][j]=max(dp[i][j],dp[i-z][j-t]+kj)
\]
\[方程中z为质量,t为体积,kj为卡路里
\]

蒟蒻不会英文

注意,由于是01背包所以质量和体积要从大到小循环

#include<bits/stdc++.h>
using namespace std; struct node
{
int kj,z,t;//从左到右依次为:食物的卡路里、质量、体积
}food[600]; int n,z,t;
int dp[5000][5000];//dp数组 int main()
{
scanf("%d%d",&t,&z);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&food[i].t,&food[i].z,&food[i].kj);
}
for(int i=1;i<=n;i++)
{
for(int j=z;j>=food[i].z;j--)//循环质量
{
for(int k=t;k>=food[i].t;k--)//循环体积
{
dp[j][k]=max(dp[j][k],dp[j-food[i].z][k-food[i].t]+food[i].kj);//方程
}
}
}
printf("%d",dp[z][t]);
}

NASA的食物计划的更多相关文章

  1. vijos1334 NASA的食物计划(二维费用的背包问题)

    背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安 全技术问题一直大伤脑筋,因此在各方压力下终止了航天 飞机的历史,但是此类事情会不会在以后发生,谁也无法 保证,在遇到这类航天问题时,解决方 ...

  2. 【洛谷p1507】NASA的食物计划

    (一次a……) NASA的食物计划[传送门] 好的上算法标签: 嗯这是个二维背包 (万年不变分隔线) 二维的题就是在一维基础上增加了一个条件,这个背包不仅含有质量还有体积.所以我们增加一层循环.核心算 ...

  3. [洛谷P1507]NASA的食物计划 以及 对背包问题的整理

    P1507 NASA的食物计划 题面 每个物品有三个属性,"所含卡路里":价值\(v\),"体积":限制1\(m_1\),以及"质量":限制 ...

  4. 【洛谷P1507 NASA的食物计划】

    题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安全技术问题一直大伤脑筋,因此在各方压力下终止了航天飞机的历史,但是此类事情会不会在以后发生,谁也无法保证,在遇到这类航天问题时,解决方法 ...

  5. 洛谷 P1507 NASA的食物计划 【二维费用背包】 || 【DFS】

    题目链接:https://www.luogu.org/problemnew/show/P1507 题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安全技术问题一直大伤脑筋,因此在各方压力 ...

  6. AC日记——NASA的食物计划 洛谷 P1507

    题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安 全技术问题一直大伤脑筋,因此在各方压力下终止了航天 飞机的历史,但是此类事情会不会在以后发生,谁也无法 保证,在遇到这类航天问题时,解 ...

  7. 洛谷 P1507 NASA的食物计划

    题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安 全技术问题一直大伤脑筋,因此在各方压力下终止了航天 飞机的历史,但是此类事情会不会在以后发生,谁也无法 保证,在遇到这类航天问题时,解 ...

  8. 洛谷——P1507 NASA的食物计划

    https://www.luogu.org/problem/show?pid=1507#sub 题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安 全技术问题一直大伤脑筋,因此在各方压力 ...

  9. P1507 NASA的食物计划

    传送 01背包又进化了,它变成了二维背包. 既然它多了一个维度,那么我们的f[j]也变成了二维数组f[i][j],其中i表示费用1,j表示费用2 核心方程也相应的变成了f[i][j]=max(f[i- ...

  10. Vijos P1334 NASA的食物计划

    解法 二维费用01背包问题 解法就是先枚举物品再枚举条件这里两个条件所以要枚举两个for 代码 #include <bits/stdc++.h> using namespace std; ...

随机推荐

  1. 2024年智能革命:HarmonyOS NEXT与盘古大模型5.0的颠覆性融合

    引言 2024年,这一年注定在全球智能设备市场的历史上写下浓墨重彩的一笔.作为全球科技巨头,华为再次以其前瞻性的布局,推动了技术与应用的深度融合.在这个充满变革的时代,华为通过不断扩展的鸿蒙生态系统, ...

  2. 什么是API?(详解)

    编程资料时经常会看到API这个名词,网上各种高大上的解释估计放倒了一批初学者.初学者看到下面这一段话可能就有点头痛了. API(Application Programming Interface,应用 ...

  3. 从日志记一次Spring事务完整流程

    spring事务一次完整流程,创建 >确认获取连接 >完成 >提交>释放链接 DataSourceTransactionManager //Step1. 进入业务方法前,依据事 ...

  4. office系列软件(word、ppt、excel)打不开的解决方案

    前言 ​ 这里我遇到的情况是点击都没反应,而不像很多人那样有报错弹窗,费劲千辛万苦才最终解决,中间一度自暴自弃想着干脆用WPS得了(大可不必),中间我尝试了三种方法,不一定哪种有效,权当分享: 一.使 ...

  5. 【YashanDB知识库】开源调度框架Quartz写入Boolean值到YashanDB报错

    问题现象 Quartz 是一个广泛应用于企业级应用中的开源作业调度框架,它主要用于在Java环境中管理和执行任务. 为了任务调度,Quartz的数据模型中使用了大量的布尔值记录任务.流程的各种状态,如 ...

  6. 【YashanDB知识库】v$instance视图中实例角色含义不明确

    [标题]v$instance视图中实例角色含义不明确 [问题分类]文档问题 [关键词]YashanDB, v$instance, 实例角色 [问题描述]v$instance视图中实例角色(如MASTE ...

  7. LeetCode题集-2 - 两数相加

    这个题目是什么意思呢?简单来说就是把两个链表平铺开,头节点对齐,然后从头开始相同的节点相加,满10则进位,进位值与下个节点继续相加,当一个链表没有节点时候则可以把没有节点当做0继续与有节点的链表继续相 ...

  8. ASP.NET Core Library – Google libphonenumber (Country Dial Code)

    前言 Google libphonenumber 是 Java 的, ASP.NET Core 只是 port 过去而已. 以前在 angular2 学习笔记 ( translate, i18n 翻译 ...

  9. Nuxt Kit 中的上下文处理

    title: Nuxt Kit 中的上下文处理 date: 2024/9/16 updated: 2024/9/16 author: cmdragon excerpt: Nuxt Kit 提供的上下文 ...

  10. @RequestBody注意事项

    使用@RequestBody注解时,是用于接收Content-Type为application/json类型的请求,数据类型是JSON:{"aaa":"111" ...