HDU 4859 海岸線 最小割

2022-05-05 05:42:10 字數 2084 閱讀 8792

這題考察的是最小割。

我們可以這樣想:海岸線的長短變化都是e引起的,我們通過把』e'變成'.'或'd'來使海岸線最大化。

我們要算海岸線就是算格仔『.'和格仔'd'(在原有地圖周圍四面都要加』d『)相鄰的面數,要使它最大,就是要使'.'與』.';'d'與'd'相鄰的面數最小,而面數最小可以用最小割來做。

現在我們先把格仔上的點黑白染色,(i+j)%2==1的為a類,為0的為b類,

在a類中,所的』.'與源點相連(容量為inf),所有的』d'與匯點相連(容量為inf)。

在b類中,所有的『.'與匯點相連(容量為inf),所有的'd'與源點相連(容量為inf)。

e不與源點,匯點相連。

所有的點與周圍的四個點連一條有向邊(容量為1)。

圖建好啦,跑一下最大流,ans=總的面-最大流。

現在讓我們來研究一下這圖的一些性質:

首先,只有』.'到『.『,』d'到'd『的路徑能聯通源點匯點

其次,考慮'e'。

如果與『e』相連的四個點都是'.'或都是'd『,那這個』e『,不可能有流通過,也就是它最終的屬性肯定與周圍的是相反的!

其次如果與『e'相鄰的有』.'和『d'(這裡的'.'和』d'要麼都屬於a類,要麼都屬於b類),那麼就可能會有不同的流通過(這就是在給e定屬性了)。

我們通過最大流演算法求出圖的最小割,也就是兩邊相同的面數的最小值。

#include#include

#include

#include

#include

using

namespace

std;

const

int maxn = 55

;const

int inf=0x3f3f3f3f

;struct

edge

};struct

dinic

void addedge(int

from, int to, int

cap)

bool

bfs() }}

return

vis[t];

}int dfs(int x, int

a) }

return

flow;

}int maxflow(int s, int

t)

return

flow;

}}dinic;

char

str[maxn][maxn];

intmp[maxn][maxn];

intn, m,tot;

const

int dx = ;

const

int dy = ;

void

init()

intmain()

n++, m++;

for (int i = 0; i <= n; i++) str[i][0] = str[i][m] = 'd'

;

for (int j = 0; j <= m; j++) str[0][j] = str[n][j] = 'd'

;

for (int i = 0; i <= n; i++)

}dinic.init(tot+1

);

for (int i = 0; i <= n; i++)

if ((i + j) % 2

)

else

if (str[i][j] == 'd'

) }

else

else

if(str[i][j]=='d'

) }}}

int tmp = dinic.maxflow(0

, tot);

int ans = (n+1)*(m+1)*2-(m+1)-(n+1)-tmp;

printf(

"case %d: %d\n

",++kase, ans);

}return0;

}

HDU 4859 海岸線 最小割

強烈建議閱讀一下最小割模型在資訊學競賽中的應用 其中2.2.2的optimal marks一題和此題建模非常相像。在原圖外圍虛擬一圈 d 我們要最大化的周長,就可以等價為最大化相鄰的 d 和 的總對數,也就是最大化相鄰格仔不同型別的總對數。按照 中的建圖方式,我們可以最小化相鄰格仔不同型別,反過來想...

hdu 4859 海岸線(最小割)

題目 建模 一種新的建圖思路 周圍加了一圈d,令d為奇,為偶,若d確實為奇,與ss連inf,若為偶,與tt 連 inf。同理。然後與周圍的點連 1 盡量保持不變的 習慣,最小割就從 1,1 開始建。include include include include include include def...

hdu 4859 海岸線 最小割

歡迎來到珠海!由於土地資源越來越緊張,使得許多海濱城市都只能依靠填海來擴充套件市區以求發展。作為z市的決策人,在仔細觀察了z市地圖之後,你準備通過填充某些海域來擴充套件z市的海岸線到最長,來吸引更多的遊客前來旅遊度假。為了簡化問題,假設地圖為乙個n m的格仔,其中一些是陸地,一些是可以填充的淺海域,...