首页 > 代码库 > 2014多校第七场1005 || HDU 4939 Stupid Tower Defense (DP)
2014多校第七场1005 || HDU 4939 Stupid Tower Defense (DP)
题目链接
题意 :长度n单位,从头走到尾,经过每个单位长度需要花费t秒,有三种塔:
红塔 :经过该塔所在单位时,每秒会受到x点伤害。
绿塔 : 经过该塔所在单位之后的每个单位长度时每秒都会经受y点伤害。
蓝塔 : 经过该塔所在单位之后,再走每个单位长度的时候时间会变成t+z。
思路 : 官方题解 :
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #define LL long long 5 6 using namespace std ; 7 8 LL dp[1510][1510] ,n,x,y,z,t,ans; 9 10 int main()11 {12 int T ,casee = 1;13 scanf("%d",&T) ;14 while(T--)15 {16 memset(dp,0,sizeof(dp)) ;17 scanf("%I64d %I64d %I64d %I64d %I64d",&n,&x,&y,&z,&t) ;18 ans = n * t * x ;19 for(int i = 1 ; i <= n ; i ++)20 {21 for(int j = 0 ; j <= i ; j++ )22 {23 if( !j ) dp[i][j] = dp[i-1][j] + t*(i-1-j) * y ;24 else dp[i][j] = max(dp[i-1][j-1]+(i-j)*y*(t+(j-1)*z),dp[i-1][j]+(i-1-j)*y*(t+j*z)) ;25 ans = max(ans,dp[i][j] + (n-i)*(j * z + t)*(x+(i-j)*y)) ;26 }27 }28 printf("Case #%d: %I64d\n",casee ++ ,ans) ;29 }30 return 0 ;31 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。