HDU2819 二分匹配與矩陣的秩

2021-07-26 12:47:59 字數 646 閱讀 7060

題意:

給出乙個矩陣問能否實現對角線全部是1,能的話輸出路徑,不能的話輸出-1

思路:首先根據矩陣的性質,這一定是乙個滿秩矩陣,所以只根據行或列交換就一定能實現。

所以行和列構成二分圖,然後跑一發匈牙利就知道行不行。

然後怎麼輸出交換的步驟呢,我們只考慮列交換的話,在對於陣列cy[ ]也就是存列的配對物件的陣列,對於每個列可以尋找哪個列配對的行是等於他的,因為對角線上行等於列。

如果等於他,而且這個列就是本身他的列,那麼這樣就好了,如果不是的話就要交換,達到目的,那麼還要處理,因為一旦交換他們配對的行就變了。

#includeusing namespace::std;

typedef pairpii;

const int n = 1e2+10;

pii swp[1010];

bool rel[n][n];

bool vis[n];

int cy[n],cx[n];

int n;

bool findpath(int u)}}

return false;

}int main()

}if(ans==n)

break;}}

}printf("%d\n",num);

for(int i=0;i

HDU 2819 Swap(二分匹配)

題意 交換任意兩行或兩列,使主對角線全為1。分析 1 主對角線都為1,可知最終,第一行與第一列匹配,第二行與第二列匹配,2 根據初始給定的矩陣,若aij 1,則說明第i行與第j列匹配,據此求最大匹配數cnt,若cnt n,才可通過交換使主對角線都為1。3 交換時,可只交換行或只交換列。如 只交換列,...

二分 二分匹配

給了乙個矩陣 n行m列 選n個數 要保證這n個數不在同行同列,計算出第k大的數最小 二分答案,然後我們對於每個a i j mid的我們就i和j建立一條邊 然後二分求最大匹配必須大於等於n k 1 因為是第k大 而不是第k小 坑了好久才發現 include include include includ...

hdu2413 二分 二分匹配

題意 地球和外星球大戰,地球有n個飛船,外星球有m個飛船,每個飛船有自己的其實戰艦和戰艦增長率,星球於星球之間有距離,問你最少多少年地球可以打敗外星球,每個星球最多只能和乙個星球對戰.思路 題意的最後一句話告訴我們這個題目滿足二分圖,我們可以二分列舉多少年打敗,每次都重新建圖,對於h i 和 a j...