給出乙個網格圖,其中某些格仔有財寶,每次從左上角出發,只能向下或右走。問至少走多少次才能將財寶撿完。此對此問題變形,假設每個格仔中有好多財寶,而每一次經過乙個格仔至多只能撿走一塊財寶,至少走多少次才能把財寶全部撿完
\(x\) 這個點不能順路走到 \(y\) 當且僅當 \(y\) 在 \(x\) 的右上角
答案就是從左下角走到右上角的"最長路",即最長不能一次性走完的路徑,其餘的顯然都可以順路走掉
用乙個簡單dp求出 "最長路" 即可
#includeusing namespace std;
const int n=1005;
int n,m,a[n][n],f[n][n];
void work()
} printf("%d\n",f[1][m]);
}int main()
BZOJ 3997 TJOI2015 組合數學
time limit 20 sec memory limit 128 mb submit 936 solved 679 submit status discuss 給出乙個網格圖,其中某些格仔有財寶,每次從左上角出發,只能向下或右走。問至少走多少次才能將財寶撿完。此對此問題變形,假設每個格仔中有好多...
bzoj3997 TJOI2015 組合數學
我們要求最少路徑覆蓋,可以等價於求最大獨立集。我們要找到乙個權值和最大的點集 s 使得對於點集中任意兩個點 點i 和 點j 使得 點i 不能到 點j 就是要求 點i 嚴格在 點j 的右上方或左下方。用dp可以在 o n 2 內解決。include include include include in...
BZOJ3997 TJOI2015 組合數學
傳送門 根據dilworth定理 偏序集的最小鏈劃分 最長反鏈 對於這題來說,把圖建出來 可以發現圖是乙個dag 題目等價於求最小路徑覆蓋 如果直接用網路流求的話t飛 發現是個偏序問題,所以dag上的最小路徑覆蓋 最長反鏈 即現在要找的東西就是乙個集合s 所有的i,j不可達 求最大權值和 簡單dp一...