2020 12 03提高組模擬 袋鼠

2022-05-05 16:48:07 字數 892 閱讀 1543

你知道嗎?烏拉圭的人口有345.7萬,同時,僅澳大利亞就有4700萬只袋鼠。

袋鼠決定入侵烏拉圭。袋鼠們將在平原上布陣,平原被劃分成\(n\times m\)的網格。

每個格仔裡至多有乙隻袋鼠。

為了抵禦袋鼠的入侵,你需要**敵人的陣型。具體地,你需要計算袋鼠陣

型的數目,滿足平原網格中每行、每列的袋鼠數目之和均為\(k\).

如果袋鼠入侵了烏拉圭,那麼每乙個烏拉圭人都要打 14 只袋鼠。你不知道,

你不在乎,你只會在這裡寫這道無聊的題,你只關心你自己。

\(1\leq n,m\leq9\),\(0\leq k\leq min(n,m)\)

題目大意:在\(n\times m\)的矩陣了填01,問有多少種方案使得每行每列都為\(k\)

注意到\(n,m\)特別小,可以採取暴力打表。而容易推出在\(k=0\)時答案是1,而如果\(n\ne m\)且\(k\ne0\)時無解

那麼題目就可以轉化成\(n\times n\)的矩陣,而容易發現\(k\)與\(n-k\)是具有對稱性的,那麼這個題的最大資料就是\(n=m=9,k=4\),這個用乙個比較優秀的暴力(如記憶化)先跑出來,然後就打表

難得的打表題呀,正解是狀壓\(dp\)

#include#define ll long long

using namespace std;

int n,m,k;

ll a[15][15]=,,,,,, , , , };;

int main()

if (2*k>n) k=n-k;

printf("%lld\n",a[n][k]);

fclose(stdin);

fclose(stdout);

return 0;

}

2020 11 24提高組模擬

今天分數和昨天差不多,言下之意呢,想必懂得都懂,沒錯我再次爆零了,doge 早上有點困唔,晚上還是要早點睡。t1 想了很久始終覺得是到神仙題,然後發現 t2 是到水題,碼完 t2 肥來看 t1 才發現開頭有一句 oier 那麼多年了我才發現無向無環圖是乙個森林,人沒了人沒了,再想一想不就是樹形 dp...

2018 07 08 2018提高組 模擬C組

fj準備教他的奶牛彈奏一首歌曲,歌曲由n 1 n 50,000 種音節組成,編號為1到n,而且一定按照從1到n的順序進行彈奏,第i種音節持續b i 1 b i 10,000 個節拍,節拍從0開始計數,因此從節拍0到節拍b 1 1彈奏的是第1種音節,從b 1到b 1 b 2 1彈奏的是第2種音節,依此...

NOIP提高組 20151029模擬

其實這套題目並不算太難,但是還是發揮不了100 水平。第一題直接線性篩法,求出質數,然後就可以判斷乙個數是否為質數了。這道題還可以用miller rabin去求,後者的速度較快,如果資料再大些,就要使用後者了。第二題,比賽時發現了,當n 7時,答案會每四個一迴圈,但是就沒有繼續往下想,其實想下去會想...