#pragma comment(linker, "/STACK:102400000,102400000")
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
__int64 dp[1505][1505]; //dp[i][j]:已通过i个塔防,其中j个蓝,累计伤害值
int main() {
int T,cas,i,j;
__int64 n,x,y,z,t;
scanf("%d",&T);
for(cas=1;cas<=T;++cas) {
memset(dp,0,sizeof(dp));
scanf("%I64d%I64d%I64d%I64d%I64d",&n,&x,&y,&z,&t);
for(i=2;i<=n;++i) {
dp[i][0]=dp[i-1][0]+t*(i-1)*y;
for(j=1;j<i;++j)
dp[i][j]=max(dp[i-1][j]+(j*z+t)*(i-j-1)*y,dp[i-1][j-1]+((j-1)*z+t)*(i-j)*y);
}
__int64 mx=0;
for(i=0;i<=n;++i) {
for(j=0;j<=i;++j)
mx=max(mx,dp[i][j]+(t+j*z)*(n-i)*(x+(i-j)*y));
}
printf("Case #%d: %I64d\n",cas,mx);
}
return 0;
}
HDU 4939 Stupid Tower Defense (DP)
最新推荐文章于 2018-05-19 10:54:32 发布