【HDU】4939 Stupid Tower Defense 【dp】
来源:互联网 发布:智器PDF阅读软件 编辑:程序博客网 时间:2024/05/16 14:05
传送门:【HDU】4939 Stupid Tower Defense
题目分析:稍微分析一下就可以知道红塔放在前面一定不会比放在后面更优,然后我们只需要对绿塔和蓝塔做一次dp。设dp[ i ][ j ]为前i个塔中有j个绿塔造成的最大伤害。那么可以得到这样的转移方程:
FOR ( i , 1 , n )FOR ( j , 1 , i ) {dp[i][j] = dp[i - 1][j - 1] + ( t + ( i - j ) * z ) * ( j - 1 ) * y ;if ( i - 1 >= j ) dp[i][j] = max ( dp[i][j] , dp[i - 1][j] + ( t + ( i - j - 1 ) * z ) * j * y ) ;}第一条表示第i个位置放绿塔,( t + ( i - j ) * z ) * ( j - 1 ) * y为所有塔对位置i造成的伤害。
第二条表示第i个位置放蓝塔,( t + ( i - j - 1 ) * z ) * j * y为所有塔对位置i造成的伤害。
做完这个dp以后我们枚举所有的情况[ i , j ],对于[ i , j ]这种情况有:
damage[ i ][ j ]=dp[ i ][ j ] + ( n - i ) * ( ( t + ( i - j ) * z ) * ( x + j * y ) )的总伤害,( n - i ) * ( ( t + ( i - j ) * z ) * ( x + j * y ) )为x塔造成的伤害与前j个塔在之后造成的所有伤害的和。
答案即ans = max{damage[ i ][ j ] | 0 <= i <= n,0 <= j <= i }。
代码如下:
#include <cstdio>#include <cstring>#include <algorithm>using namespace std ;#define REP( i , a , b ) for ( int i = a ; i < b ; ++ i )#define FOR( i , a , b ) for ( int i = a ; i <= b ; ++ i )#define REV( i , a , b ) for ( int i = a ; i >= b ; -- i )#define CLR( a , x ) memset ( a , x , sizeof a )typedef long long LL ;const int MAXN = 1505 ;LL dp[MAXN][MAXN] ;LL n , x , y , z , t ;void solve () {scanf ( "%I64d%I64d%I64d%I64d%I64d" , &n , &x , &y , &z , &t ) ;FOR ( i , 1 , n )FOR ( j , 1 , i ) {dp[i][j] = dp[i - 1][j - 1] + ( t + ( i - j ) * z ) * ( j - 1 ) * y ;if ( i - 1 >= j ) dp[i][j] = max ( dp[i][j] , dp[i - 1][j] + ( t + ( i - j - 1 ) * z ) * j * y ) ;}LL ans = 0 ;FOR ( i , 0 , n )FOR ( j , 0 , i )ans = max ( ans , dp[i][j] + ( n - i ) * ( ( t + ( i - j ) * z ) * ( x + j * y ) ) ) ;printf ( "%I64d\n" , ans ) ;}int main () {int T , cas = 0 ;scanf ( "%d" , &T ) ;while ( T -- ) {printf ( "Case #%d: " , ++ cas ) ;solve () ;}return 0 ;}
0 0
- HDU 4939 Stupid Tower Defense dp
- hdu 4939 Stupid Tower Defense(dp)
- HDU 4939 Stupid Tower Defense dp
- hdu 4939 Stupid Tower Defense dp
- HDU 4939 - Stupid Tower Defense (DP)
- HDU 4939 Stupid Tower Defense(DP)
- HDU 4939 Stupid Tower Defense(贪心+dp)
- HDU 4939 Stupid Tower Defense (DP)
- hdu 4939 Stupid Tower Defense (dp)
- hdu Stupid Tower Defense 4939 dp
- HDU 4939 Stupid Tower Defense 简单DP
- hdu 4939 Stupid Tower Defense DP
- HDU 4939 Stupid Tower Defense(dp+贪心)
- 【HDU】4939 Stupid Tower Defense 【dp】
- hdu 4939 Stupid Tower Defense() dp
- HDU 4939 Stupid Tower Defense (DP)
- hdu 4939 Stupid Tower Defense dp
- HDU 4939-E - Stupid Tower Defense-DP
- CoreAnimation的介绍
- git_amlogic版本库搭建
- IO复用
- hdoj 4939 Stupid Tower Defense【dp】
- volatile关键字
- 【HDU】4939 Stupid Tower Defense 【dp】
- HDU 3309 Roll The Cube (BFS)
- fmt:formatDate的输出格式详解
- SQl 查询表、存储过程、函数、视图等所在的存储过程
- AC自动机 + DP小结
- Ubuntu lsof 命令整理
- Android权限大全
- MFC改变鼠标形状的方法汇总
- 再谈UEFI下的Protocol概念