首页 > 其他 > 详细

HDU 4939 Stupid Tower Defense

时间:2014-08-19 12:23:24      阅读:327      评论:0      收藏:0      [点我收藏+]

dp;枚举red,dp前i 个塔中有j 个蓝塔的最大伤害。

机智的地方:dp前i 个塔的时候可以同时处理n-i 个红塔,这样就少了个循环。。。(枚举红塔的循环)

 

 

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 
 6 long long dp[1505][1505];
 7 long long n,x,y,z,t;
 8 
 9 int main (){
10     int T,kase=0;
11     cin>>T;
12     //scanf("%d",&T);
13     while (T--){
14         cin>>n>>x>>y>>z>>t;
15         //scanf("%I64d%I64d%I64d%I64d%I64d",&n,&x,&y,&z,&t);
16         long long ans=x*n*t;
17             memset (dp,0,sizeof dp);
18             for (int i=0;i<=n;i++){
19                 if (i>0)
20                     dp[i][0]=dp[i-1][0]+y*(i-1)*t;
21                 dp[i][i]=0;
22                 for (int j=1;j<i;j++){
23                     dp[i][j]=max (dp[i-1][j-1]+(i-j)*y*(t+(j-1)*z),dp[i-1][j]+(i-j-1)*y*(t+j*z));
24                 }
25                 for (int j=0;j<=i;j++){
26                     ans=max (ans,dp[i][j]+(n-i)*x*(t+j*z)+(n-i)*(t+j*z)*(i-j)*y);
27                 }
28             }
29         cout<<"Case #"<<++kase<<": "<<ans<<endl;
30         //printf("Case #%d: %I64d\n", ++kase , ans);
31     }
32     return 0;
33 }

 

HDU 4939 Stupid Tower Defense,布布扣,bubuko.com

HDU 4939 Stupid Tower Defense

原文:http://www.cnblogs.com/gfc-g/p/3921541.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!