巴蜀2311 宮廷守衛

2021-07-24 09:43:53 字數 1185 閱讀 3016

description

從前有乙個王國,這個王國的城堡是乙個矩形,被分為m×n個方格。一些方格是牆,而另一些是空地。這個王國的國王在城堡裡設了一些陷阱,每個陷阱佔據一塊空地。

一天,國王決定在城堡裡布置守衛,他希望安排盡量多的守衛。守衛們都是經過嚴格訓練的,所以一旦他們發現同行或同列中有人的話,他們立即向那人射擊。因此,國王希望能夠合理地布置守衛,使他們互相之間不能看見,這樣他們就不可能互相射擊了。守衛們只能被布置在空地上,不能被布置在陷阱或牆上,且一塊空地只能布置乙個守衛。如果兩個守衛在同一行或同一列,並且他們之間沒有牆的話,他們就能互相看見。(守衛就像象棋裡的車一樣)

你的任務是寫乙個程式,根據給定的城堡,計算最多可布置多少個守衛。 input

第一行兩個整數m和n(1≤m,n≤200),表示城堡的規模。

接下來m行n列的整數,描述的是城堡的地形。第i行j列的數用ai,j表示。   ai,j=0,表示方格[i,j]是一塊空地;

ai,j=1,表示方格[i,j]是乙個陷阱;   ai,j=2,表示方格[i,j]是牆。 output

乙個整數k,表示最多可布置k個守衛。

把每一段連續的行、列看成二分圖的左右部中的點,在能放的地方對所在行和列連邊,答案就是二分圖最大匹配。

#include

#include

#include

using

namespace

std;

int bel[210][210],fir[100010],ne[1000010],to[1000010],f[100010],

map[210][210],tot,totx,numx[100010],numy[100010],n,m,cnt=1;

bool vis[100010];

void add(int u,int v)

void init()

bel[i][j]=totx;

flag=0;}}

tot=totx;

for (j=1;j<=n;j++)

if (map[i][j]!=1)

flag=0;}}

}bool dfs(int u)

}return0;}

int main()

printf("%d\n",ans);

}

巴蜀 士兵訓練

在 c 國中有 n 位士兵,除士兵 1 外,每位士兵 i 均有且僅有一位士兵j jj j 作為他的直屬教官。士兵 i 被他的直屬教官 j 以及所有能管轄 j 的士兵所管轄。每位士兵也看做能管轄自己。每位士兵均有兩個屬性值 戰鬥力bi b i與領導力 li l i。現在 c 國要舉行 q 次閱兵,每次...

2311 數的組合 陣列

只有內心充滿了陽光的人,才不會絕望,那麼即使環境很差走投無路,我們的心靈還有依靠。設整數x1,x2,xn 已存放在陣列a中,編寫一遞迴過程,輸出從這n個數中取出所有k 個數的所有組合 k n 例 若a中存放的數是1,2,3,4,5,k為3,則輸出結果應為 543,542,541,532,531,52...

十二宮之白羊宮

原貼位置 http acm.tongji.edu.people ps showproblem.php?problem id 1000 contest id 6 problem 話說星矢 紫龍 冰河 阿瞬為了救活雅典娜,必須勇闖 十二宮。本題包含多組資料,每組資料5行.第1行,為s1,s2,s3,s4...