NYOJ712 探尋寶藏

2021-07-30 00:26:38 字數 1502 閱讀 3817

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:5 描述

傳說hmh大沙漠中有乙個m*n迷宮,裡面藏有許多寶物。某天,dr.kong找到了迷宮的地圖,他發現迷宮內處處有寶物,最珍貴的寶物就藏在右下角,迷宮的進出口在左上角。當然,迷宮中的通路不是平坦的,到處都是陷阱。dr.kong決定讓他的機械人卡多去探險。

但機械人卡多從左上角走到右下角時,只會向下走或者向右走。從右下角往回走到左上角時,只會向上走或者向左走,而且卡多不走回頭路。(即:乙個點最多經過一次)。當然卡多順手也拿走沿路的每個寶物。

dr.kong希望他的機械人卡多盡量多地帶出寶物。請你編寫程式,幫助dr.kong計算一下,卡多最多能帶出多少寶物。

輸入第一行: k 表示有多少組測試資料。 

接下來對每組測試資料:

第1行: m n

第2~m+1行: ai1 ai2 ……ain (i=1,…..,m)

【約束條件】

2≤k≤5 1≤m, n≤50 0≤aij≤100 (i=1,….,m; j=1,…,n)

所有資料都是整數。 資料之間有乙個空格。

輸出

對於每組測試資料,輸出一行:機械人卡多攜帶出最多價值的寶物數

樣例輸入

2

2 3

0 10 10

10 10 80

3 3

0 3 9

2 8 5

5 7 100

樣例輸出

120

134

之前做過類似的題,該題解法,雙線dp,可以想象成兩人同時從(1,1)點到(m,n)點尋寶,dp[k][i][j],k表示橫縱座標的和,(i,k-1)表示第乙個人位置,(j,k-j)表示第二個人的位置。  狀態轉移方程 dp[k][i][j]=max(dp[k-1][i][j],dp[k-1][i-1][j-1],dp[k][i-1][j],dp[k][i][j-1])+map[i][k-i]+map[j][k-j]

#include#includeint max(int a,int b)

int map[55][55],dp[110][55][55];

int main()

if(j-1>=1 && k-i-1>=1)

v=max(v,dp[k-1][i][j-1]);

dp[k][i][j]=v+map[i][k-i]+map[j][k-j];

}printf("%d\n",dp[m+n-1][m][m-1]+map[m][n]);

} return 0;

}

nyoj 712 探 尋 寶 藏

時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 傳說hmh大沙漠中有乙個m n迷宮,裡面藏有許多寶物。某天,dr.kong找到了迷宮的地圖,他發現迷宮內處處有寶物,最珍貴的寶物就藏在右下角,迷宮的進出口在左上角。當然,迷宮中的通路不是平坦的,到處都是陷阱。dr.kong決定讓...

nyoj 712探 尋 寶 藏

時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 傳說hmh大沙漠中有乙個m n迷宮,裡面藏有許多寶物。某天,dr.kong找到了迷宮的地圖,他發現迷宮內處處有寶物,最珍貴的寶物就藏在右下角,迷宮的進出口在左上角。當然,迷宮中的通路不是平坦的,到處都是陷阱。dr.kong決定讓...

南陽理工OJ 題目712 探 尋 寶 藏

雙線dp問題,在網上找了好幾個題解才把思路理清.d k i j 表示第k步,第一條線在i行,第二條線在j行時收集的寶藏 由於每次僅走一步,所以第一條線座標 i,k i 第二條線座標 j,k j 狀態轉移方程 d k i j max 在第k 1步時,由於是雙線,每條線均有兩種行走方式到達狀態 i,j ...