傳紙條:
方格取數:
這兩道題一樣的……所以我放在一起整理
方格取數比較簡單,記住一條公式,方格任意一點: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 ...