題解 P1074 靶形數獨

2022-01-30 18:59:50 字數 649 閱讀 8880

來一篇通俗點的dlx的題解。

有關dlx的講解:

針對本題的一些細節詳見注釋。

code:

#include#include#includeusing namespace std;

const int maxn=81*4+5;

const int maxnode=9*9*9*4*4+5;

const int slot=0,row=1,col=2,sub=3;//四種型別的覆蓋任務編號

const int p[9][9]=//預處理權值,,

,,,,

,,};inline int encode(int a,int b,int c) //統一編碼函式

inline void decode(int code,int &a,int &b,int &c)

int res=-1,mp[9][9];//答案和輸入資料

struct dlx

r[n]=0; l[0]=n;

} void addnodes(int r,const vector&columns)

solver.dfs(0);

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

return 0;

}

致謝:

P1074 靶形數獨 題解

原題傳送門 不愧是 2009 noip tg t4 連續打了4天的 吸了口氧才通過。前置知識 對於一道數獨題,我們可以先預處理出每一行0的個數,然後從個數最少的行開始做,這樣可以節省大量的時間 因為這些格仔可以填的數字少 對於本題,我一開始的思路是 仿照前置知識預處理,分數進行打表,存在 poi n...

題解 P1074 靶形數獨

看完所有的題解之後發現沒有人用二進位制,我就知道我的機會來了 手動滑稽 x y 相當於x pow 2,y lowbit x 找到x的二進位制中最小的1的位置1 1 10 1 0 0 0 0 沒有了關於這一題,line,rool,cell三個陣列 均初始化為111111111 二進位制 分別用來存這一...

P1074 靶形數獨

小城和小華都是熱愛數學的好學生,最近,他們不約而同地迷上了數獨遊戲,好勝的他們想用數獨來一比高低。但普通的數獨對他們來說都過於簡單了,於是他們向 z 博士請教,z 博士拿出了他最近發明的 靶形數獨 作為這兩個孩子比試的題目。靶形數獨的方格同普通數獨一樣,在 999 格寬 999 格高的大九宮格中有 ...