bzoj2150 部落戰爭

2022-04-30 04:15:08 字數 970 閱讀 3157

補了一下匈牙利的各種騷操作。

最大匹配等於最小覆蓋

最大獨立集=n-最小覆蓋

最大團=補圖的最大獨立集

對於這題,把每個點拆成兩個,可以到達的就連邊。

我匈牙利的模版是真不熟。

#include#include

#include

#include

#include

#include

using

namespace

std;

int dx[4]=;

int dy[4]=;

struct

node

a[210000];int len,last[3100

];void ins(int x,int

y)int match[3100

];bool chw[3100

];bool find_muniu(int

x) }

}return

false;}

int nm,num[110][110

];char ss[110][110

];int

main()

nm=0

;

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

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

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

if(ss[i][j]=='.'

)

for(int t=0;t<=3;t++)

int ans=0

; memset(match,

0,sizeof

(match));

for(int i=1;i<=nm;i++)

printf(

"%d\n

",nm-ans);

return0;

}

bzoj2150 部落戰爭

lanzerb的部落在a國的上部,他們不滿天寒地凍的環境,於是準備向a國的下部征戰來獲得更大的領土。a國是乙個m n的矩陣,其中某些地方是城鎮,某些地方是高山深澗無人居住。lanzerb把自己的部落分成若干支軍隊,他們約定 1.每支軍隊可以從任意乙個城鎮出發,並只能從上往向下征戰,不能回頭。途中只能...

BZOJ2150 部落戰爭

bzoj2150 部落戰爭 lanzerb的部落在a國的上部,他們不滿天寒地凍的環境,於是準備向a國的下部征戰來獲得更大的領土。a國是一 個m n的矩陣,其中某些地方是城鎮,某些地方是高山深澗無人居住。lanzerb把自己的部落分成若干支軍隊,他們 約定 1.每支軍隊可以從任意乙個城鎮出發,並只能從...

BZOJ2150 部落戰爭

題解 把每個點拆成入點和出點,因為必須經過一次且只能經過一次。所以在兩個點之間連一條上界 下界 1的邊。然後再s到每個入點連邊,每個出點向t連邊,點與點之間。求最小流就可以過了。感覺最小流神一般的存在。1 include2 include3 include4 include5 include6 in...