第一瞬間以為是網路流,看完資料範圍果斷棄療。但是考慮到這個有點像對偶圖轉最長路。。就是求一條從左下到右上的最長路徑,大概可以證明這就是最少的次數。簡單的證明如下:
1.必要性。顯然成立,這幾個點之間不能互相到達,至少需要走這幾個點才能全部取完。
2.充分性。反證法,假設有幾個點沒有被取完。那麼對於每乙個點,以這個點為右下角的乙個矩形中所有最長路徑上的點,他們走的路徑都已經滿了(語文不好只能這樣表達了),否則肯定可以走下來。那麼吧這個點加入最長路徑,加上這個點左上角走下來碰到的一下點,是更長的路徑。只能大概這麼表達一下了,講不清楚啊。
或者直接用網路流解釋,這道題目就是給出流量下界求最小流,那麼對應的就是最大割了。
ac**如下:
#include#include#include#define n 2005
using namespace std;
int n,m,a[n][n],f[n][n];
int read()
return x;
}int main()
return 0;
}
by lych
2015.12.11
BZOJ 3997 組合數學
bzoj 3997 傳送門 這題是乙個比較明顯的最小鏈覆蓋,只不過還給每條鏈加上了權值 dilworth 定理 最小鏈覆蓋數 最長反鏈長度 一般用 dilworth 定理都是求最長反鏈,這題算是逆運用吧 發現能構成反鏈的兩點一定是具有 左上 右下 的位置關係,於是我們從右上角 1,m 開始,dp 到...
BZOJ 3997 TJOI2015 組合數學
time limit 20 sec memory limit 128 mb submit 936 solved 679 submit status discuss 給出乙個網格圖,其中某些格仔有財寶,每次從左上角出發,只能向下或右走。問至少走多少次才能將財寶撿完。此對此問題變形,假設每個格仔中有好多...
bzoj 3997 TJOI2015 組合數學
給出乙個網格圖,其中某些格仔有財寶,每次從左上角出發,只能向下或右走。問至少走多少次才能將財寶撿完。此對此問題變形,假設每個格仔中有好多財寶,而每一次經過乙個格仔至多只能撿走一塊財寶,至少走多少次才能把財寶全部撿完 x 這個點不能順路走到 y 當且僅當 y 在 x 的右上角 答案就是從左下角走到右上...