题目链接:http://vjudge.net/contest/139376#problem/E
题意看注释就能懂了,求能获得的最大价值。
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std; int dp[]; int n,m,p,q; ///n面粉的重量 m是stuff的种类,p是生产馒头需要的淀粉的质量,q是馒头能卖的钱数
/// m组数 剩下a g stuff need stuff b stuff c g面粉 价值d int main()
{
while(scanf("%d%d%d%d",&n,&m,&p,&q)==)
{
memset(dp,,sizeof(dp));
for(int i=; i<=n; i++)
dp[i]=(i/p)*q;
int a,b,c,d;
for(int k=; k<=m; k++)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
for(int i=; i<=a/b; i++)
for(int j=n; j>=c; j--)
dp[j]=max(dp[j],dp[j-c]+d);
}
printf("%d\n",dp[n]);
}
return ;
}