POJ 2063 Investment(完全背包

题目大意:给你一笔金额,你要将这比金额去投资,现在有t种股票,每种股票都有一个价值和年收益,问你如何投资在n年后的最大收益

思路:由于获益后的钱加上本金可以再来投资,所以背包容量变化,这点还是不难的,主要本题给了一个信息:股票的价值都是1000的倍数,,所以后面可以空间优化,对每个价值除以1000对背包容量优化

#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;int w[15],v[15];int dp[100000];int main(){int T;scanf("%d",&T);int s,y;while(T–){scanf("%d%d",&s,&y);int m;scanf("%d",&m);for(int i=1;i<=m;i++)scanf("%d%d",&w[i],&v[i]);for(int i=1;i<=m;i++) w[i]/=1000;int ans=s;while(y–){int mmax=ans/1000;memset(dp,0,sizeof(dp));for(int i=1;i<=m;i++)for(int j=w[i];j<=mmax;j++)dp[j]=max(dp[j],dp[j-w[i]]+v[i]);ans+=dp[mmax];}printf("%d\n",ans);}return 0;}

喜欢就该珍惜,珍惜就别放弃。

POJ 2063 Investment(完全背包

相关文章:

你感兴趣的文章:

标签云: