一看到这道题就是01背包

但是我注意到价值和当前的时间有关。

没有想太多,直接写,0分

然后发现输入方式不对……

改了之后只有25分

我知道wa是因为时间会影响价值,但不知道怎么做。

后来看了题解,发现我对01背包理解不够透彻
普通01背包做下来放入物品的顺序是1到n的

因为这个时候顺序没有关系,所以可以直接做

但是这道题后面放的物品价值小,所以价值有关系

所以就要提前排好序。

排序的依据就判断相邻两个物品先后放的价值,

然后化简可以推出一个式子。

这里其实是一个贪心。

然后就做01背包就好了

然后注意开long long

#include<cstdio>
#include<algorithm>
#include<cstring>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
#define _for(i, a, b) for(int i = (a); i <= (b); i++)
using namespace std; typedef long long ll;
const int MAXN = 112;
const int MAXM = 112345;
ll f[MAXM];
struct node
{
ll a, b, c;
bool operator < (const node& rhs) const
{
return c * rhs.b < rhs.c * b;
}
}s[MAXN];
int t, n; int main()
{
scanf("%d%d", &t, &n);
REP(i, 0, n) scanf("%lld", &s[i].a);
REP(i, 0, n) scanf("%lld", &s[i].b);
REP(i, 0, n) scanf("%lld", &s[i].c);
sort(s, s + n); ll ans = 0;
REP(i, 0, n)
for(int j = t; j >= s[i].c; j--)
{
f[j] = max(f[j], f[j-s[i].c] + s[i].a - j * s[i].b);
ans = max(ans, f[j]);
} printf("%lld\n", ans);
return 0;
}

洛谷 P1417 烹调方案 (01背包拓展)的更多相关文章

  1. 洛谷P1417 烹调方案

    题目背景 由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的 ...

  2. 洛谷 P1417 烹调方案

    题目背景 由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的 ...

  3. [洛谷P1417 烹调方案]贪心+dp

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3211Dream City Time Limit: 1 Second     ...

  4. 洛谷P1417 烹调方案【dp】

    题目:https://www.luogu.org/problemnew/show/P1417 题意: 一道菜有$a,b,c$三个值.烧一道菜的时间是$c$.得到的价值是,$a-t*b$其中$t$是菜完 ...

  5. 洛谷 P1417烹调方案

    题目大意: 一共有n件食材,每件食材有三个属性,ai,bi和ci,如果在t时刻完成第i样食材则得到ai-t*bi的美味指数,用第i件食材做饭要花去ci的时间. 求最大美味指数之和. 分析: 显然的0/ ...

  6. 洛谷 P1417 烹调方案 题解

    题面 这道题是一道典型的排序dp a[i]−b[i]∗(t+c[i])+a[j]−b[j]∗(t+c[i]+c[j]) a[j]−b[j]∗(t+c[j])+a[i]−b[i]∗(t+c[i]+c[j ...

  7. 洛谷1417 烹调方案 dp 贪心

    洛谷 1417 dp 传送门 挺有趣的一道dp题目,看上去接近于0/1背包,但是考虑到取每个点时间不同会对最后结果产生影响,因此需要进行预处理 对于物品x和物品y,当时间为p时,先加x后加y的收益为 ...

  8. 【洛谷】【动态规划/01背包】P2925 [USACO08DEC]干草出售Hay For Sale

    [题目描述:] 约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草. 顿因有H(1≤H≤5000)包干草,每一包都有它 ...

  9. 【洛谷】【动态规划/01背包】P1734 最大约数和

    [题目描述:] 选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大. [输入格式:] 输入一个正整数S. [输出格式:] 输出最大的约数之和. [算法分析:] 01背包,每个数 ...

随机推荐

  1. K3内部表数据名称

    在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单.----------------系统设置------------------------FStatus: ...

  2. win10 MongoDB安装

    1.下载地址https://www.mongodb.com/download-center#community 2.安装步骤 点击next同意安装,下面这一步选择Custom 自定义目录 注意:在这一 ...

  3. Python笔记24-----迭代器、生成器的使用(如嵌套列表的展开、树的遍历等)

    1.递归yield使用: 嵌套列表展开 def flatten(nested): if type(nested)==list: for sublist in nested: for i in flat ...

  4. [luogu] P4155 [SCOI2015]国旗计划(贪心)

    P4155 [SCOI2015]国旗计划 题目描述 A 国正在开展一项伟大的计划 -- 国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这项计划需要多名边防战士以接力的形式共同完成,为此 ...

  5. linux环境下删除包含特殊字符的文件或目录

    linux环境下删除包含特殊字符的文件或目录 ls -liUse find command as follows to delete the file if the file has inode nu ...

  6. ASP.NET-model验证

    在ASP.NET的model中,可以定义下面的这种属性,来实现前台签证字符串 RegularExpression(@"(|.*(?=.{6,})(?=.*\d)(?=.*[a-zA-Z]). ...

  7. SQLSERVER-存储过程知识点

    原文链接:http://www.qeefee.com/article/000566 存储过程是一组预编译的SQL语句,它可以包含数据操纵语句.变量.逻辑控制语句等. 存储过程允许带参数: 输入参数:可 ...

  8. Swift开发教程--怎样使UITableViewController背景透明

    self.tableView.backgroundView? .backgroundColor = UIColor.clearColor(); self.tableView.backgroundCol ...

  9. 带输出參数的存储过程的定义,以及在aso.net中调用

    ALTER proc [dbo].[mp_w_RechargePortalPayPal_All] ( @PayPalOrderNo nvarchar(50), --订单号 @nAccountIDFro ...

  10. 斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    以作备份,来源http://jiasuhui.com/archives/178954 本文由“新智元”(微信ID:AI_era)编译,来源:dawn.cs.stanford.edu,编译:刘小芹 斯坦 ...