P1417 烹调方案
Posted xcfxcf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1417 烹调方案相关的知识,希望对你有一定的参考价值。
排序 + 01背包
为什么要排序??01背包的价值是固定的,本题还与时间有关,所以应该找一个价值最大的方案
#include <bits/stdc++.h> using namespace std; #define int long long const int maxn = 1e5 + 10; int v,n; struct node{ int a,b,c; }e[55]; int dp[maxn]; bool cmp(node d,node f){ return f.b * d.c < d.b * f.c; } signed main() { //freopen("in","r",stdin); ios::sync_with_stdio(0); cin >> v >> n; for (int i = 1; i <= n; i++) cin >> e[i].a; for (int i = 1; i <= n; i++) cin >> e[i].b; for (int i = 1; i <= n; i++) cin >> e[i].c; sort(e + 1,e + 1 + n,cmp); int ans = 0; for(int i = 1;i <= n; i++){ for(int j = v; j >= e[i].c; j--){ dp[j] = max(dp[j],dp[j - e[i].c] + e[i].a - j * e[i].b); ans = max(ans,dp[j]); } } cout << ans << endl; //cout << dp[n][v] << endl;不一样 return 0; }
以上是关于P1417 烹调方案的主要内容,如果未能解决你的问题,请参考以下文章