码迷,mamicode.com
首页 > 其他好文 > 详细

luogu P1005 矩阵取数游戏 区间DP

时间:2019-04-12 15:01:24      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:最大   for   一段   独立   style   return   dfs   color   精度   

每一行是独立的,分开处理即可。

dp[i][j]表示[i,j]这一段,取完的最大收益。转移很显然,dp[i][j] = max(dp[i + 1][j] + 2^(m - (j - l)) * mp[t][i],dp[i][j - 1] + 2^(m - (j - l)) * mp[t][j])

不想写高精度,python水一发。

 1 n,m = map(int,input().split())
 2 res = 0
 3 mp = [[0 for i in range(0,80,1)] for i in range(0,80,1)]
 4 dp = [[-1 for i in range(0,80,1)] for i in range(0,80,1)]
 5 def dfs(t,l,r):
 6     if (dp[l][r] >= 0):
 7         return dp[l][r]
 8     if (l == r):
 9         dp[l][r] = int(pow(2,m)) * mp[t][l]
10         return dp[l][r]
11     dp[l][r] = max(dfs(t,l + 1,r) + int(pow(2,m - (r - l))) * mp[t][l],dfs(t,l,r - 1) + int(pow(2,m - (r - l))) * mp[t][r])
12     return dp[l][r]
13 for i in range(0,n,1):
14     mp[i] = list(map(int,input().split(" ")))
15 for o in range(0,n,1):
16     for i in range(0,m,1):
17         for j in range(0,m,1):
18             dp[i][j] = -1
19     res += dfs(o,0,m - 1)
20 print(res)

 

luogu P1005 矩阵取数游戏 区间DP

标签:最大   for   一段   独立   style   return   dfs   color   精度   

原文地址:https://www.cnblogs.com/iat14/p/10695960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!