傳送門
動態規劃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...