日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告

發布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

P1129 [ZJOI2007]矩陣游戲

題目描述

\(Q\)是一個非常聰明的孩子,除了國際象棋,他還很喜歡玩一個電腦益智游戲――矩陣游戲。矩陣游戲在一個\(N*N\)黑白方陣進行(如同國際象棋一般,只是顏色是隨意的)。每次可以對該矩陣進行兩種操作:

行交換操作:選擇矩陣的任意兩行,交換這兩行(即交換對應格子的顏色)

列交換操作:選擇矩陣的任意兩列,交換這兩列(即交換對應格子的顏色)

游戲的目標,即通過若干次操作,使得方陣的主對角線(左上角到右下角的連線)上的格子均為黑色。

對于某些關卡,小\(Q\)百思不得其解,以致他開始懷疑這些關卡是不是根本就是無解的!!于是小\(Q\)決定寫一個程序來判斷這些關卡是否有解。

輸入輸出格式

輸入格式:

第一行包含一個整數\(T\),表示數據的組數。

接下來包含\(T\)組數據,每組數據第一行為一個整數\(N\),表示方陣的大小;接下來\(N\)行為一個\(N*N\)\(01\)矩陣(\(0\)表示白色,\(1\)表示黑色)。

輸出格式:

包含\(T\)行。對于每一組數據,如果該關卡有解,輸出一行\(Yes\);否則輸出一行\(No\)

說明

對于\(20\)%的數據,\(N ≤ 7\)

對于\(50\)%的數據,\(N ≤ 50\)

對于\(100\)%的數據,\(N ≤ 200\)


研究一下操作和要求,我們可以這么轉化:每行至少有一個\(1\)并且這些\(1\)互相不在同一列

對于行\(i\),我們用了坐標\((i,j)\)\(1\),那么第\(j\)列的\(1\)不就廢了嗎?

好的,求匹配。

坐標為\((i,j)\)的點作為第\(i\)行第\(j\)列的邊。

求每一行和每一列的最大匹配數即可。

二分圖匹配。


code:

#include <cstdio> #include <cstring> const int N=202; struct Edge {int to,next; }g[N*N]; int T,head[N],cnt=0,n;void add(int u,int v) {g[++cnt].to=v,g[cnt].next=head[u],head[u]=cnt; } int match[N],used[N]; bool m_match(int now) {for(int i=head[now];i;i=g[i].next){int v=g[i].to;if(!used[v]){used[v]=1;if(!match[v]||m_match(match[v])){match[v]=now;return true;}}}return false; }int main() {scanf("%d",&T);int is;while(T--){memset(match,0,sizeof(match));memset(head,0,sizeof(head));scanf("%d",&n);cnt=0;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){scanf("%d",&is);if(is) add(i,j);}int ans=0;for(int i=1;i<=n;i++){memset(used,0,sizeof(used));if(m_match(i)) ans++;}if(ans==n) printf("Yes\n");else printf("No\n");} }

我的一些出現的細節錯誤:

  • 匈牙利used數組置true時機(似乎經常錯)
  • used置0的時機(在if的外面)
  • 前向星head,cnt置0

  • 2018.5.5

    轉載于:https://www.cnblogs.com/butterflydew/p/8996087.html

    總結

    以上是生活随笔為你收集整理的洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。