題目大意:
男主要占領a國。a國是乙個m*n的矩陣,其中某些地方是城鎮,某些地方是高山深澗。男主有一些軍隊,約定:
1. 每支軍隊可以從任意乙個城鎮出發,只能從上往向下征戰,不能回頭。途中只能經過城鎮,不能經過高山深澗。
2. 如果某個城鎮被某支軍隊到過,則其他軍隊不能再去那個城鎮了。
3. 每支軍隊都可以在任意乙個城鎮停止征戰。 4. 所有軍隊都很奇怪,他們走的方法有點像西洋棋中的馬。不過馬每次只能走1*2的路線,而他們只能走r*c的路線。
假設每支軍隊都能順利占領這支軍隊經過的所有城鎮,問男主至少要多少支軍隊才能完成統一全國的大業。
題解:求最大點獨立集
跟bzoj3175差不多,把能走到的互相連邊構圖,求個最大點獨立集。於是上匈牙利跑最大匹配,最後用總點數減掉就好了。
#include#include#include#include#includeusing namespace std;#define maxn 3000
struct node
a[maxn*4];int len,first[maxn];
int tim,ask[maxn],bf[maxn];
int map[60][60];
void ins(int x,int y)
bool ffind(int x)
} return false;
}int main()
} for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (map[i][j])
tim=ans=0;memset(ask,0,sizeof(ask));
memset(bf,-1,sizeof(bf));
for (i=1;i<=num;i++)
ans=num-ans;
printf("%d\n",ans);
return 0;
}
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 ...