洛谷P1004方格取數( )

2021-09-10 06:54:01 字數 2984 閱讀 1502

題目描述

設有n \times nn×n的方格圖(n \le 9)(n≤9),我們將其中的某些方格中填入正整數,而其他的方格中則放入數字00。如下圖所示(見樣例):

a

0 0 0 0 0 0 0 0

0 0 13 0 0 6 0 0

0 0 0 0 7 0 0 0

0 0 0 14 0 0 0 0

0 21 0 0 0 4 0 0

0 0 15 0 0 0 0 0

0 14 0 0 0 0 0 0

0 0 0 0 0 0 0 0

b

某人從圖的左上角的aa點出發,可以向下行走,也可以向右走,直到到達右下角的bb點。在走過的路上,他可以取走方格中的數(取走後的方格中將變為數字00)。

此人從aa點到bb點共走兩次,試找出22條這樣的路徑,使得取得的數之和為最大。

輸入輸出格式

輸入格式:

輸入的第一行為乙個整數nn(表示n \times nn×n的方格圖),接下來的每行有三個整數,前兩個表示位置,第三個數為該位置上所放的數。一行單獨的00表示輸入結束。

輸出格式:

只需輸出乙個整數,表示22條路徑上取得的最大的和。

輸入輸出樣例

輸入樣例#1: 複製

82 3 13

2 6 6

3 5 7

4 4 14

5 2 21

5 6 4

6 3 15

7 2 14

0 0 0

輸出樣例#1: 複製

67說明

noip 2000 提高組第四題

題目簡介(複雜的思路,蒟蒻的** )

話說我好久沒寫題解了啊(彷彿上午才提交了乙個,最近高產似母豬啊 )。這波,我們先分析一下。

這道題,和p1006傳紙條基本相似(如果沒刷過洛谷p1006的童鞋,推薦你去刷一刷洛谷p1006傳紙條)

廢話不多說,我們繼續講題。

這是noip2000的提高組的第四題。這道題,蒟蒻的我一看都知道這是dp來做。沒學dp的童鞋也不要慌,因為,這道題還可以用dfs(不剪枝洛谷對3個樣例,蒟蒻不會剪枝,還是老老實實寫dp吧~)(雖然題目的資料規模不大,n<=9,但是不會剪枝真的很尷尬)

[我們會有dp、dfs兩種解題,但是我重點講dp(主要是dfs不會剪枝 ) ]

我們覺得用dp會比較好

思路

四維動規的模板題,好了,目測水題,題解結束··· ···

(不是,拿錯劇本了[/劃去])

我們來捋一捋題目:

由題得:

要從a(1,1)到b(n,n)再返回a(1,1)走過的位置,數要被去掉,並且求走過的數累加的最大值[如圖,即為所示]

為了方便,我重新瞎編亂造了乙個樣例。

然後我們繼續講題。我們來看看,這個下圖的走法(黑色為陣列存圖,紅色為下標的提示,藍色為位置提示,綠色為從a到b再回到a大致流程)。看完以後,我們來思考乙個問題。

q:這個地方應該怎麼處理呢?dp貌似有點複雜啊![汗]

答:其實這個地方很好辦。that`s easy for we.這個嘛,我們假裝看成兩個人,他們都從a(1,1)走向b(n,n)。[如圖]

翻箱倒櫃,終於想起乙個叫做四維dp的東西,因為這題是兩個人走,我們思考一下能不能單純用兩個人的模擬過呢?

顯然是可以的,我們用 dp[i][j][k][l]表示第1條路線(第乙個人)的(i,j)走法和第2條路線(第二個人)的(k,l)走法。

顯然我們可以兩個人一起走(我們手牽手,我們一起走 ),複雜度是n的4次方(笑噴,時間複雜度這麼低)

所以我們就用這個方法了!

(沒意見1次,沒意見2次,成交!)

好,思路有了,就差**了。

誒,別慌,我們還有東西沒講:f[i][j][k][l]=max(f[i-1][j][k-1][l],f[i][j-1][k-1][l],f[i-1][j][k][l-1],f[i][j-1][k][l-1])+a[i][j]+a[k][l];

對,就是萬年公式

**(接下來,就是最激動人心的**公開環節了)

for(int i=1;i<=n;i++)}}

}

繼續,我們解釋一下,這是四層迴圈巢狀(資料不會超時),裡面就是這樣的,不過多解釋~

ac**(老闆,上**!)

我的dfs和老師的差不多,我的太亂了,於是就粘了一段老師的未剪枝的**

tle**(不會剪枝,不解釋)(感謝老師的原始碼提供)~

本期題解就這樣草率結束了,撒個小花花~

希望小夥伴們點個關注,下期我們再會,233333333~拜啦!!

洛谷 P1004 方格取數

洛谷 p1004 方格取數 設有n n的方格圖 n 9 我們將其中的某些方格中填入正整數,而其他的方格中則放 人數字0。如下圖所示 見樣例 a 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4...

洛谷P1004 方格取數

一道顯而易見的dp題,因為要走兩次,相當於兩個人一起從起點出發,所以可採取四維陣列儲存,前兩維記錄第乙個人,後兩維記錄第二個人。轉移方程 dp i j k m max dp i 1 j k 1 m max dp i 1 j k m 1 max dp i j 1 k 1 m dp i j 1 k m ...

洛谷 P1004 方格取數

洛谷 p1004 方格取數 設有n times nn n的方格圖 n le 9 n 9 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字00。如下圖所示 見樣例 a 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 ...