牛客 美味菜肴(背包) 容易看出是01背包,但是有个不同之处是,dp要求无后效性,而这题因为时间会影响答案,所以买的顺序是需要确定下来才能做背包dp 可以用贪心的方法,并且易证要按t/b排序。之后答案的顺序肯定是按所给的顺序取的,再做一遍01背包即可 View Code 没有人不辛苦,只有人不喊疼 标签: 动态规划 ...
#include<bits/stdc++.h>usingnamespacestd;constintN=1e6+10;constintmod=1e9+7; typedeflonglongll;structnode{ ll a,b,c;booloperator<(constnode &t )const{returnc*t.b>n>>m>>t;for(i=1;i<=n;i++){ cin>>b[i]; }for(i=1;i<=m;i++){intj; cin>>j>>s[i].a>>s[i].c; ...
第i道菜肴有三个属性ai,bi,ci,ai是该菜肴的美味值,bi是该菜肴所选食材不新鲜的速率,如果在第t时刻完成第i道菜则美味值为:ai - t * bi,完成这道菜需要ci的时间。 小明希望在这T时间内能做出菜肴使得总美味值最大,所以小明求助于你。 输入描述 : 第1行输入三个整数n,m,T,分别代表食材种类,菜肴种类和...
看到每一道菜有选和不选两种决策,我们想到了01背包。但是,和普通的01背包相比有个区别,就是做每一个决策是具有后效性的:选了i道菜会影响i+k道菜的价值,也就是说,菜的价值会和选的顺序有关。因此,我们需要利用一个贪心确定一个选择的顺序,令按照这一顺序选择答案最优。通过证明我们可以得到可以按照 的要求...