bzoj1001 狼抓兔子

2022-08-05 01:33:10 字數 2971 閱讀 7421

現在小朋友們最喜歡的"喜羊羊與灰太狼",話說灰太狼抓羊不到,但抓兔子還是比較在行的,

而且現在的兔子還比較笨,它們只有兩個窩,現在你做為狼王,面對下面這樣乙個網格的地形:

左上角點為(1,1),右下角點為(n,m)(上圖中n=3,m=4).有以下三種型別的道路 

1:(x,y)<==>(x+1,y) 

2:(x,y)<==>(x,y+1) 

3:(x,y)<==>(x+1,y+1) 

道路上的權值表示這條路上最多能夠通過的兔子數,道路是無向的. 左上角和右下角為兔子的兩個窩,

開始時所有的兔子都聚集在左上角(1,1)的窩裡,現在它們要跑到右下解(n,m)的窩中去,狼王開始伏擊

這些兔子.當然為了保險起見,如果一條道路上最多通過的兔子數為k,狼王需要安排同樣數量的k只狼,

才能完全封鎖這條道路,你需要幫助狼王安排乙個伏擊方案,使得在將兔子一網打盡的前提下,參與的

狼的數量要最小。因為狼還要去找喜羊羊麻煩.

input

第一行為n,m.表示網格的大小,n,m均小於等於1000.

接下來分三部分

第一部分共n行,每行m-1個數,表示橫向道路的權值. 

第二部分共n-1行,每行m個數,表示縱向道路的權值. 

第三部分共n-1行,每行m-1個數,表示斜向道路的權值. 

輸入檔案保證不超過10m

output

輸出乙個整數,表示參與伏擊的狼的最小數量.

sample input

3 4

5 6 4

4 3 1

7 5 3

5 6 7 8

8 7 6 5

5 5 5

6 6 6

sample output

14
第一反應是最小割,但是會t的飛起。

求平面圖的最小割,可轉化為求對偶圖的最短路。

先來介紹一下平面圖:乙個圖g=(v,e),若能將其畫在平面上,且任意兩條邊的交點只能是g的頂點,則該圖是平面圖

即上圖黑色的圖是平面圖,紅色的圖不是平面圖

由平面圖的邊包圍而成,其中不含圖的頂點。也稱為面。由平面圖的邊包圍且無窮大的面稱為外部面。乙個平面圖有且只有乙個外部面。具有相同邊界的面稱為相鄰面。即下圖中r0,r1,r2,r3,是該平面圖中的四個面,r0是外部面且r0與r1, r2, r3均相鄰。

下面我們引入對偶圖,設有平面圖g=(v,e),滿足下列條件的圖g'= (v',e') 稱為圖g的對偶圖:g的任一面ri內有且僅有一點vi'。對於一對相鄰面(ri,rj)我們把vi'和vj'連起來,就構造了一張對偶圖。如下圖g'是g的對偶圖。

如果不好理解,我們再舉幾個例子,下圖中紅線組成的圖是原圖的對偶圖

考慮如何用對偶圖來求出原圖的最小割。

首先連線s和t,如下圖藍色虛線,得到乙個附加面,我們設附加面對應的點為s',外部面對應的點為t',求該圖的紅色的對偶圖g',最後刪去s'和t'之間的邊,然後,1'到2'的距離為4到7的流量,5'到7'的距離為3到2的流量......,如下圖所示(流量、距離未標出),我們構造出乙個這樣的圖:

我們可以發現,乙個原圖(藍色)的s-t割都可以看做一條新圖(紅色)的s'到t'的路徑。然後,我們求s-t的最小割就可以看做求s'到t'的最短路。

我們再來看看狼抓兔子的樣例圖經過如上操作後的新圖,綠色為新圖邊的邊權

我們發現每個小三角形就是乙個平面,然後按上面說的方法連邊即可

跑一下13號點到14號點的最短路。

注意:當n==1或者m==1時,原圖是沒有任何三角形的。隨便特判一下就好了

#include#include

#include

#include

using

namespace

std;

int h[2000100],nxt[8001000],to[8000100],k=0;int cost[8000100

];int d[2000100];int tot=0

;typedef pair

p; priority_queue

,greater>q;

void ins(int u,int v,int c)

void dij(int

s) }

}}int

main()

int u=(i-1)*(m-1)*2+j*2,v=(i-2)*(m-1)*2+j*2-1

;

if(i!=1&&i!=n)

if(i==1

)

if(i==n)

}for(int i=1;i)

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

int u=(i-1)*(m-1)*2+j*2-1

;

if(j!=1&&j!=m)

if(j==1

)

if(j==m)

}for(int i=1;i)

for(int j=1;j)

/*for(int i=1;i<=tot;i++)

BZoj1001狼抓兔子

description 現在小朋友們最喜歡的 喜羊羊與灰太狼 話說灰太狼抓羊不到,但抓兔子還是比較在行的,而且現在的兔子還比較笨,它們只有兩個窩,現在你做為狼王,面對下面這樣乙個網格的地形 左上角點為 1,1 右下角點為 n,m 上圖中n 4,m 5 有以下三種型別的道路 1 x,y x 1,y 2...

bzoj1001 狼抓兔子

time limit 15 sec memory limit 162 mb submit 12719 solved 3017 submit status discuss description 現在小朋友們最喜歡的 喜羊羊與灰太狼 話說灰太狼抓羊不到,但抓兔子還是比較在行的,而且現在的兔子還比較笨,...

BZOJ 1001 狼抓兔子

參考 本題的題解 還有那篇平面圖網路流的 兩極相通 最大 最小定理在資訊學競賽中的應用 兩篇足夠了。pragma comment include include include include using namespace std define mp i,j make pair i,j defin...