P1784 數獨 題解

2022-02-14 18:25:14 字數 1919 閱讀 5526

csdn同步

原題鏈結

前置知識:

** \(\text\) 演算法

注:這次的前置知識如果你不會又不看,**和思路肯定都看不懂的。

簡要題意:

填滿乙個未完成的數獨。

首先數獨的規則是:

每行所填數不得重複,為 \(1\) ~ \(9\) 之間。

每列所填數不得重複,為 \(1\) ~ \(9\) 之間。

每宮所填數不得重複,為 \(1\) ~ \(9\) 之間。

首先這是乙個數學遊戲,但是如果你想在 \(1s\) 之內 \(\text\) 吊打全場,那麼就要學習如何解決數獨問題。

下面我們來說說,怎麼把它扯到精確覆蓋上面呢。

決策應該是形如 \((i,j,x)\) 的三元組,表示 \(a_ = x\).

第 \(i\) 行只能用乙個 \(x\),需要 \(9 \times 9 = 81\) 列。(每個格仔都要開一列,對應 \(1\) ~ \(81\) 列)

第 \(j\) 列只能用乙個 \(x\) ,再開 \(9 \times 9 = 81\) 列。(每個格仔都要開一列,對應 \(82\) ~ \(162\) 列)

\((i,j)\) 所在的宮只能用乙個 \(x\),再開 \(9 \times 9 = 81\) 列。(每個格仔都要開一列,對應 \(162\) ~ \(243\) 列)

\((i,j)\) 只能填乙個數(千萬不要忽略這個!),再開 \(9 \times 9 = 81\) 列。(每個格仔都要開一列,對應 \(244\) ~ \(324\) 列)

那麼多少行呢?顯然,\(9^3 = 729\) 行,因為每個行、列、宮都要決策一次。

所以我們就將數獨問題轉化成乙個 \(729 \times 324\) 的矩陣上有 \(729 \times 4 = 3216\) 個 \(1\) 的精確覆蓋問題

然後直接套板子,主要建圖即可。

時間複雜度:\(o(wys)\).(很優但難以說明,嚴格來說是 \(o(c^n)\) ,其中 \(n \leq 3216\),\(c\) 為極其接近 \(1\) 的常數)

實際得分:\(100pts\).

// 板子部分不再解釋

#pragma gcc optimize(2)

#includeusing namespace std;

const int n=1e5+1;

#define for(i,a,x) for(int i=a[x];i!=x;i=a[i])

inline int read()

int x=0;while(ch>='0' && ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x*f;}

int n,m,id,fir[n],siz[n];

int l[n],r[n],u[n],d[n];

int col[n],row[n],ans;

int stk[n];

inline void remove(int x)

inline void recover(int x)

inline void build(int x,int y)

inline void insert(int x,int y)

int a[1001][1001];

inline bool dance(int dep) return 1;

} int wz=r[0]; for(i,r,0) if(siz[i]remove(wz); for(i,d,wz) recover(wz); return 0;

}int main()

} dance(1);

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

return 0;

}

洛谷 P1784 數獨

題目描述 數獨是根據9 9盤面上的已知數字,推理出所有剩餘空格的數字,並滿足每一行 每一列 每乙個粗線宮內的數字均含1 9,不重複。每一道合格的數獨謎題都有且僅有唯一答案,推理方法也以此為基礎,任何無解或多解的題目都是不合格的。芬蘭一位數學家號稱設計出全球最難的 數獨遊戲 並刊登在報紙上,讓大家去挑...

洛谷 P1784 數獨

洛谷傳送門 數獨是根據 9 times 99 9 盤面上的已知數字,推理出所有剩餘空格的數字,並滿足每一行 每一列 每乙個粗線宮內的數字均含 1 91 9 不重複。每一道合格的數獨謎題都有且僅有唯一答案,推理方法也以此為基礎,任何無解或多解的題目都是不合格的。芬蘭一位數學家號稱設計出全球最難的 數獨...

洛谷 P1784 數獨

數獨是根據9 9盤面上的已知數字,推理出所有剩餘空格的數字,並滿足每一行 每一列 每乙個粗線宮內的數字均含1 9,不重複。每一道合格的數獨謎題都有且僅有唯一答案,推理方法也以此為基礎,任何無解或多解的題目都是不合格的。芬蘭一位數學家號稱設計出全球最難的 數獨遊戲 並刊登在報紙上,讓大家去挑戰。這位數...