hdu 4939

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=4939

題目大意:

題目類型:dp

思路:

代碼:

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int M=1510;

long long dp[M][M];

int main()
{
	int T;
	long long  n,r,b,g,t;
	scanf("%d",&T);
	for(int ii=1;ii<=T;ii++)
	{
		memset(dp,0,sizeof(dp));
		scanf("%I64d%I64d%I64d%I64d%I64d",&n,&r,&g,&b,&t);	//要用long long存這些數,不然會錯,就在這個上wa了很多次
		for(int i=1;i<=n;i++)
		{
			dp[i][0]=dp[i-1][0]+(i-1)*g*t;
		}
		for(int i=1;i<=n;i++)
		{
			for(int j=1;i+j<=n;j++)
			{
				dp[i][j]=max(dp[i-1][j]+(j*b+t)*((i-1)*g),dp[i][j-1]+i*g*((j-1)*b+t));
			}
		}

		long long ans=-1;
		for(int i=1;i<=n;i++)
		{
			int k=n-i;
			for(int j=0;j<=k;j++)
			{
				long long temp=dp[j][k-j]+(j*g+r)*(t+b*(k-j))*i;
				if(temp>ans)
					ans=temp;
			}
		}
		printf("Case #%d: %I64d\n",ii,ans);
	}

}

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