BZOJ1059 矩陣遊戲

2022-03-31 14:43:51 字數 1029 閱讀 8689

目錄題目傳送門

剛開始理解錯題意了,以為除了主對角線上之外都不能有1.後來發現只要主對角線上可以都是1就是合法的了。實際上的題意就是讓你判斷\(n\)行與\(n\)列是否可以都匹配上,這樣就是乙個比較簡單的二分圖匹配,如果第\((i,j)\)位置上為1,就說明第\(i\)行與第\(j\)行能夠匹配,然後跑一遍匈牙利就行了。

#include using namespace std;

typedef long long ll;

bool finish_read;

templateinline void read(t &x)while(isdigit(ch))x=x*10+ch-'0',ch=getchar();x*=f;finish_read=1;}

templateinline void print(t x)

templateinline void writeln(t x)

templateinline void write(t x)

/****************=header template**********====*/

const int maxn=205;

int t,n,tot;

int a[maxn][maxn];

struct edge e[maxn*maxn];

int head[maxn],belong[maxn],vis[maxn];

/****************===define area***************=*/

void addedge(int u,int v)

void init()

bool solve(int u)

} return 0;

}int main()

} int ans=0;

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

if(ans==n) puts("yes");

else puts("no");

} return 0;

}

bzoj1059 矩陣遊戲

time limit 10 sec memory limit 162 mb submit 4731 solved 2255 submit status discuss 矩陣的任意兩行,交換這兩行 即交換對應格仔的顏色 列交換操作 選擇矩陣的任意行列,交換這兩列 即交換 對應格仔的顏色 遊戲的目標,即...

bzoj1059 矩陣遊戲

二分圖匹配經典題。因為每一行的點不管如何交換也不會不在同一行,同理,同一列的點無論如何交換都仍然在這一列。那麼也就是說要選則一些點使得滿足題意,那麼就可以去跑匹配了。若a i j 是黑色的,那麼就從i行向j列連邊,最後跑匹配。如果用邊表的話一定要記得清空計數器。不然就炸了。1 include 2 i...

bzoj 1059 矩陣遊戲

題解 很玄學的問題 因為不同行或者不同列的格仔,交換仍然不同行或者不同列 所以把問題轉化為從黑格仔裡選n個,它們的橫縱座標都不相同 然後二分圖匹配 兩個子集分別是橫座標和縱座標,如果求出的最大匹配為n,則成立,否則不成立 1 include2 include3 define maxn 410 4in...