HDU 4508 湫湫系列故事——減肥記I (2013騰訊編程馬拉松初賽第一場)

http://acm.hdu.edu.cn/showproblem.php?pid=4508


題目大意:

給定一些數據。

每組數據以一個整數n開始,表示每天的食物清單有n種食物。 
接下來n行,每行兩個整數a和b,其中a表示這種食物可以帶給湫湫的幸福值(數值越大,越幸福),b表示湫湫吃這種食物會吸收的卡路里量。
最後是一個整數m,表示湫湫一天吸收的卡路里不能超過m。

思路:

完全揹包。

一開始以爲是01揹包。

敲了01後樣例2不對啊!!!

然後改成完全就過了。。就改循環體就好了。。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=100000+10;
int w[MAXN],v[MAXN];
int dp[MAXN];
int main()
{
	int n,m;
	while(~scanf("%d",&n))
	{
		for(int i=1;i<=n;i++)
			scanf("%d%d",&v[i],&w[i]);
		scanf("%d",&m);
		
		memset(dp,0,sizeof(dp));
		
		for(int i=1;i<=n;i++)
		{
			for(int j=w[i];j<=m;j++)
			{
				dp[j]=max(dp[j],dp[j- w[i]] + v[i]);
			}
		}
		
		printf("%d\n",dp[m]);
	}
	return 0;
}



發佈了322 篇原創文章 · 獲贊 15 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章