NOIP2009提高組 靶形數獨

2022-05-19 10:10:55 字數 1100 閱讀 7676

題目:洛谷p1074、vijos p1755、codevs1174。

題目大意:給你乙個數獨,讓你填完這個數獨,並要求得分最大,問這個得分是多少(不能填完輸出-1)。

每個格仔的得分是當前格仔所填的數乘格仔的分值。

格仔的分值如下:

解題思路:暴力搜尋。

然而不加優化的搜尋是一定會超時的。

我用了這幾個優化就過了這道題:

①位運算,用乙個九位二進位制數來儲存每行/列/九宮格中已經用過的數字,則對於乙個點,不能用的數字就是它所在行的狀態or列的狀態or九宮格的狀態。

②每次搜尋時,找乙個能填的數字最少的格仔進行搜尋。

③register和手動o2(逃

之後只要你不像我一樣把求最大值看成最小值,就能ac了。

c++ code:

#includeusing namespace std;

int nin[10][10]=,,,

,,,,

,,},sco[10][10]=,,,

,,,,

,,,};

int sd[10][10],hang[10]=,lie[10]=,kuai[10]=,ans;

__attribute__((optimize("-o2")))void dfs(int s,int p)

int x,y,mn=0x3f3f3f3f;

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

if(mn==1)break;

} if(mn==0x3f3f3f3f)return;

int t=hang[x]|lie[y]|kuai[nin[x][y]];

for(register int k=9;k;--k)

if(!(t&(1<

}int main()

} dfs(s,p);

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

return 0;

}

NOIP2009 靶形數獨

爆搜沒什麼好說的。剪枝思路 一開始將每個點可能取的值的數量統計出,排序,從小到大搜 然後貪心可行性 就是剩下的地方都填9,得分10 不過在vj上測85。日。加了卡時,2e7次之內跳出,總算過了。include include include include include include inclu...

NOIP 2009 靶形數獨

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

noip2009 靶形數獨

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