題解 P1004 方格取數

2022-03-30 08:28:06 字數 856 閱讀 7977

傳送門

動態規劃yes?

設i為路徑長度,(為什麼i這一維可以省掉見下)f[j][k]表示第乙個點到了(j,i-j),第二個點到了(k,j-k)

int ji=i-j,ki=i-k;

f[j][k]=max(f[j][k],f[j-1][k-1

]); f[j][k]=max(f[j][k],f[j-1

][k]);

f[j][k]=max(f[j][k],f[j][k-1

]); f[j][k]+=s[j][ji];

if(j!=k&&ji!=ki) f[j][k]+=s[k][ki];

由於只從上乙個狀態轉移,所以可以像01揹包那樣倒序迴圈,保證只訪問上乙個狀態。

#include#include

#include

#define r register int

using

namespace

std;

int n,cnt,f[10][10],s[10][10

];struct

node a[

82];

inline

intg()

inline

int max(int a,int b)

signed main()

for(r i=1;i<=cnt;i++)

for(r i=1;i<=(n<<1);i++) for(r j=i;j>=1;j--) for(r k=i;k>=1;k--) printf(

"%d\n

",f[n][n]);

}

2019.3.1

P1004 方格取數

這題有兩種做法。第一種是同時考慮兩個點,也就是用4個迴圈。列舉每個點的位置,並計算總分。f i j k l max f i j k l f i 1 j k 1 l f i j 1 k l 1 f i 1 j k l 1 f i j 1 k 1 l a i j a k l 當 i k j l 時,多算...

P1004 方格取數

題目描述 設有n n的方格圖 n 9 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。如下圖所示 見樣例 a0 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...

P1004 方格取數

題目描述 設有n n的方格圖 n 9 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字00。如下圖所示 見樣例 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...