我好菜我好菜我好菜我好菜我好菜我好菜我好菜我好菜我好菜我好菜我好菜
[題目]:
[思路]
一開始想的是先dp第一遍, 再將走過的置零(hdg教的我逆推), 再dp第二遍.
然而wa了之後, hdg告訴我先讓第乙個人走最優可能會讓總體走不了最優.
所以要列舉兩個人的所有的狀態, 4維dp儲存兩個人的位置.
轉移方程:
(如果兩個人走到同乙個位置, 乙個數當然只能取一次)
邊界:dp[1][1][1][1]=mp[1][1][1][1]
dp帶0的都是0
[**]
#include#define ****(x) std::cout
using namespace std;
typedef long long ll;
const int m=2e5+5;
const int inf=1e9+5;
int dp[10][10][10][10];
int mp[10][10]= ;
int n;
int go[4][4]= ;
int main()
memset(dp,0,sizeof(dp));
for(int a=1; a<=n; a++) else
dp[a][b][c][d]+=add+mp[a][b]+mp[c][d];
if(a==c&&b==d)
dp[a][b][c][d]-=mp[c][d];}}
}}
}printf("%d\n",dp[n][n][n][n]);
return 0;
}
洛谷 P1004 方格取數(DP)
考慮讓兩個人同時走,設計狀態則直接設f i j k m 表示第乙個人走到 i,j 第二個人走到 k,m 時所取數的最大值。當 i,j k,m 時,即兩個人走到同乙個點,則這個點其實在第二遍的時候已經為0,所以這個點的貢獻只是一次。則有轉移方程 f i j k m max f i 1 j k 1 m ...
洛谷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 0 0 0 21 ...
洛谷 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...