码迷,mamicode.com
首页 > 其他好文 > 详细

【解题报告】[动态规划]RQNOJ PID2 / 开心的金明

时间:2014-04-27 21:26:22      阅读:537      评论:0      收藏:0      [点我收藏+]

标签:blog   class   com   code   img   http   div   style   tar   art   color   

原题地址:http://www.rqnoj.cn/problem/2

解题思路:背包问题。

状态转移方程:DP[i][j]=max(DP[i-v[j]][j-1]+p[j]*v[j],DP[i][j-1])

DP[i][j]表示最多话费i的钱,购买前j+1个物品所能达到的最大价值。

解题代码:

mamicode.com,码迷
 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<algorithm>
 4 using namespace std;
 5 int DP[30005][25];
 6 int v[25];
 7 int p[25];
 8 int main()
 9 {
10     int n,m,i,j;
11     scanf("%d%d",&n,&m);
12     for(i=0;i<m;i++)
13     {
14         scanf("%d%d",&v[i],&p[i]);
15     }
16     for(i=0;i<=n;i++)
17     {
18         if(i>=v[0]) DP[i][0]=v[0]*p[0];
19         else DP[i][0]=0;
20     }
21     for(j=1;j<m;j++)
22     {
23         for(i=0;i<=n;i++)
24         {
25             if(i>=v[j]) DP[i][j]=max(DP[i-v[j]][j-1]+p[j]*v[j],DP[i][j-1]);
26             else DP[i][j]=DP[i][j-1];
27             //if(DP[i][j]>=3900) {printf("dp[%d][%d]=%d\n",i,j,DP[i][j]);getchar();}
28         }
29     }
30     printf("%d\n",DP[n][m-1]);
31     return 0;
32 }
View Code

 

【解题报告】[动态规划]RQNOJ PID2 / 开心的金明,码迷,mamicode.com

【解题报告】[动态规划]RQNOJ PID2 / 开心的金明

标签:blog   class   com   code   img   http   div   style   tar   art   color   

原文地址:http://www.cnblogs.com/syiml/p/3695036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!