BZOJ2150 部落戰爭

2022-05-19 20:40:29 字數 920 閱讀 6989

給出乙個矩陣,矩陣上的字元有兩種,一種是'x',表示山洞(不可走),一種是'.',表示城鎮

可以在城鎮處放士兵,士兵經過的每個城鎮都會被占領,士兵只能向下走,而且行走的方式和馬相似,不過馬走的是1*2,士兵走的是r*c,士兵不能經過乙個被占領的城鎮

求出最少派出多少個士兵能夠占領所有城鎮

最小路徑覆蓋問題,用二分圖匹配

將所有城鎮拆成兩個集合

如果x能走到y,則x連向y的第二個集合的點

然後將總點數-最大匹配數就是最小路徑覆蓋數了

#include#include

#include

#include

#include

using

namespace

std;

char st[51][51

];struct

node

a[21000];int len,last[6100

];void ins(int x,int

y)int dx[5],dy[5

];int

n,m,r,c;

int p(int x,int y)

int match[6100],chw[6100

];bool findmuniu(int x,int

t) }

}return

false;}

intmain()}}

}memset(chw,

0,sizeof

(chw));

memset(match,

0,sizeof

(match));

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

printf(

"%d\n

",sum);

return0;

}

bzoj2150 部落戰爭

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

BZOJ2150 部落戰爭

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

bzoj2150 部落戰爭

補了一下匈牙利的各種騷操作。最大匹配等於最小覆蓋 最大獨立集 n 最小覆蓋 最大團 補圖的最大獨立集 對於這題,把每個點拆成兩個,可以到達的就連邊。我匈牙利的模版是真不熟。include include include include include include using namespace ...