会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
不是我干的
博客园
首页
新随笔
联系
管理
POJ2063 Investment 完全背包[DP]
算是完全背包入门题吧。
#include<iostream> #define max(a,b) (a>b?a:b) using namespace std; const int inf=2001000; const int year=45; int w,n,y; struct { int interest; int w; }bond[15]; int mat[inf]; int dp(int w) { w/=1000; for(int i=1;i<=n;i++) for(int j=bond[i].w;j<=w;j++) { mat[j]=max(mat[j],mat[j-bond[i].w]+bond[i].interest); } return mat[w]; } int main() { int cases; scanf("%d",&cases); while(cases--) { memset(mat,0,sizeof(mat)); scanf("%d%d",&w,&y); scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d%d",&bond[i].w,&bond[i].interest); bond[i].w/=1000; } int ans=w; for(int i=1;i<=y;i++) { ans+=dp(ans); } printf("%d\n",ans); } return 0; }
posted on
2011-11-10 13:30
不是我干的
阅读(
142
) 评论(
0
)
收藏
举报
刷新页面
返回顶部