luogu 1006 1004 傳紙條 方格取數

2021-08-30 08:34:43 字數 868 閱讀 4946

傳紙條:

方格取數:

這兩道題一樣的……所以我放在一起整理

方格取數比較簡單,記住一條公式,方格任意一點:i+j=k+2。對於這道題,因為開始從左上角走,所以k是走的步數,所以我們只需要乙個三維dp,f[k][i][j]表示走了k步,第乙個人在第i列,第二個人在第j列,然後根據公式,橫座標也推出來了,所以複雜度只是三次方!然後對於取完數變0這個操作,只需要當橫縱座標都相等時,只取乙個就行了。

#include#include#include#includeint a[15][15],f[15<<1][15][15],n;

using namespace std;

int main()

f[0][1][1]=a[1][1];

for(int k=1;k<=2*n-2;k++)}}

cout《傳紙條**其實差不多的,基本思路也就像上面那個一樣。但是它多了乙個條件,就是走過了乙個格仔,另乙個人是不能再走的,相當於封路了。這個時候我們要把列強制不相等嗎?其實不是的,像上面那樣,走到一起就減去就好了。為什麼可以這樣呢?

引用了luogu的xeonz1的討論發言

#include #include #include #define maxn 55

using namespace std;

int f[2 * maxn][maxn][maxn];

int a[maxn][maxn];

int n,m;

int max_ele(int a,int b,int c,int d)

int main()

cout << f[n+m-2][n][n] << endl;

return 0;

}

傳紙條和方格取數(DP)

輸入輸出樣例 輸入樣例 1 3 30 3 9 2 8 5 5 7 0 輸出樣例 1 34首先發現這可能是兩種路徑 一種是從小淵內邊,另一種是從小軒內邊 但是我們可以發現很難實現點的清零或者是路徑的儲存,而且還面對著當前的路徑是否為最優解的問題 一開始博主用的貪心 然後博主就用了取模存點的鬼畜演算法,...

P1006 傳紙條 P1004 方格取數 (DP)

一 p1006 傳紙條 題目鏈結 題面 題解 等價於找兩條從左上角到右下角的不相交的路線,使得和最大。我們設dp k i j k為 橫座標加縱座標的和,i 為左邊那條路徑的縱座標,j 為右邊那條路徑的縱座標 include include include include include includ...

luogu1004 方格取數

設有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 0 0 0 0 15 0 ...