Luogu 1436 棋盤分割 題解 DP

2022-05-12 11:57:09 字數 907 閱讀 3198

題面:

設f[k][i][j][x][y]為切了k次從(i,j)到(x,y)矩形的最大解。

那麼dp方程就很好寫出來了。

f[k][i][j][x][y]=min(f[k][i][j][x][y],min(f[1][i][j][a][y]+f[k-1][a+1][j][x][y],f[k-1][i][j][a][y]+f[1][a+1

][j][x][y]));

f[k][i][j][x][y]=min(f[k][i][j][x][y],min(f[1][i][j][x][a]+f[k-1][i][a+1][x][y],f[k-1][i][j][x][a]+f[1][i][a+1][x][y]));

雖然有一點點長,但是還是很好理解。

就是把當前的分為兩半。

一半切k-1刀,另外一半是這1刀。

這樣就合併成了。

全部**如下:

#include#define ll long long

using

namespace

std;

int n,tu[10][10

];ll sum[

10][10

];ll f[

20][10][10][10][10

];int

main()

for(int k=2;k<=n;k++)

for(int i=1;i<=8;i++)

for(int j=1;j<=8;j++)

for(int x=i;x<=8;x++)

for(int y=i;y<=8;y++)

printf(

"%lld\n

",f[n][1][1][8][8

]);

return0;

}

Luogu1436 棋盤分割(動態規劃)

無 將乙個 的棋盤進行如下分割 將原棋盤割下一塊矩形棋盤並使剩下部分也是矩形,再將剩下的兩部分中的任意一塊繼續如此分割,這樣割了 n 1 次後,連同最後剩下的矩形棋盤共有n塊矩形棋盤。每次切割都只能沿著棋盤格仔的邊進行 原棋盤上每一格有乙個分值,一塊矩形棋盤的總分為其所含各格分值之和。現在需要把棋盤...

Luogu P1436 棋盤分割 題解

嗯,點開題目,哇!是一道閃亮亮的藍題 不要被嚇到了,其實,這道題就是乙個簡單的dp啦 我們設 f x1 y1 x2 y2 c 為以 x1,y1 為左上角,以 x2,y2 為右下角的矩形分割成c個部分所取得的最大分數。列舉每一行 列 將其分割成兩部分,然後考慮是繼續分割上 左 邊還是下 右 邊 所以,...

洛谷 1436 棋盤分割

一道經典的dp題目,應該並沒有提高 拉莫難。思路 搞懂題意後 這點也很重要 我們首先考慮棋盤的分割情況,不難發現 然後我們考慮狀態的設計和轉移 ac 吧 include include include include using namespace std intread intn,b,x int ...