NOIP 2018 提高組 填數遊戲

2021-09-01 13:24:58 字數 3367 閱讀 2278

傳送門

小 d 特別喜歡玩遊戲。這一天,他在玩一款填數遊戲。

這個填數遊戲的棋盤是乙個 n×m

n \times m

n×m 的矩形**。玩家需要在**的每個格仔中填入乙個數字(數字 0

00 或者數字 1

11),填數時需要滿足一些限制。

下面我們來具體描述這些限制。

為了方便描述,我們先給出一些定義:

我們用每個格仔的行列座標來表示乙個格仔,即(行座標,列座標)。(注意: 行列座標均從 0

00 開始編號)

合法路徑 p

pp:一條路徑是合法的當且僅當:

這條路徑從矩形**的左上角的格仔 (0,

0)(0,0)

(0,0

) 出發,到矩形的右下角格仔 (n−

1,m−

1)(n - 1,m - 1)

(n−1,m

−1) 結束;

在這條路徑中,每次只能從當前的格仔移動到右邊與它相鄰的格仔,或者從當前格仔移動到下面與它相鄰的格仔。

例如:在下面這個矩形中,只有兩條路徑是合法的,它們分別是 p

1p_1

p1​:(0,

0)(0,0)

(0,0)→→→(

0,1)

(0,1)

(0,1)→→→(

1,1)

(1,1)

(1,1

) 和 p

對於一條合法的路徑 p

pp,我們可以用乙個字串 w(p

)w(p)

w(p)

來表示,該字串的長度為 n+m

−2n + m - 2

n+m−

2,其中只包含字元 「r」 或者字元 「d」, 第 i

ii 個字元記錄了路徑 p

pp 中第 i

ii 步的移動方法,「r」 表示移動到當前格仔右邊與它相鄰的格仔,「d」 表示移動到當前格仔下面與它相鄰的格仔。例如,上圖中對於路徑 p

1p_1

p1​,有 w(p

1)w(p_1)

w(p1​)

=

== 「rd」;而對於另一條路徑 p

2p_2

p2​, 有 w(p

2)=w(p_2) =

w(p2​)

= 「dr」。

同時,將每條合法路徑 p

pp 經過的每個格仔上填入的數字依次連線後,會得到乙個長度為 n+m

−1n + m - 1

n+m−

1 的 01

0101

字串,記為 s(p

)s(p)

s(p)

。例如,如果我們在格仔 (0,

0)(0,0)

(0,0

) 和 (1,

0)(1,0)

(1,0

) 上填入數字 0

00,在格仔 (0,

1)(0,1)

(0,1

) 和 (1,

1)(1,1)

(1,1

) 上填入數字 1

11(見上圖紅色數字)。那麼對於路徑 p

1p_1

p1​,我們可以得到 s(p

1)=s(p_1) =

s(p1​)

= 「011

01101

1」,對於路徑 p

2p_2

p2​,有 s(p

2)=s(p_2) =

s(p2​)

= 「001

00100

1」。遊戲要求小 d 找到一種填數字 0

00、1

11 的方法,使得對於兩條路徑 p

1p_1

p1​,p

2p_2

p2​,如果 w(p

1)>w(

p2)w(p_1) > w(p_2)

w(p1​)

>w(

p2​)

,那麼必須 s(p

1)≤s

(p2)

s(p_1) ≤ s(p_2)

s(p1​)

≤s(p

2​)。我們說字串 a

aa 比字串 b

bb 小,當且僅當字串 a

aa 的字典序小於字串 b

bb 的字典序。但是僅僅是找一種方法無法滿足小 d 的好奇心,小 d 更想知道這個遊戲有多少種玩法,也就是說,有多少種填數字的方法滿足遊戲的要求?

小 d 能力有限,希望你幫助他解決這個問題,即有多少種填 0

00、1

11 的方法能滿足題目要求。由於答案可能很大,你需要輸出答案對 109

+710^9 + 7

109+

7 取模的結果。

資料範圍:n≤8

n\le 8

n≤8,m≤1

06m\le 10^6

m≤106。

這算是一道打表找規律的題,考場上寫了個 dfs

dfsdf

s 套 dfs

dfsdf

s 找了 n≤3

n\le 3

n≤3 的規律。

具體的推導過程我就不寫了,可以看看這裡。

#include

#include

#include

#define p 1000000007

using

namespace std;

int n,m,inv128=

570312504

,inv384=

190104168

;int

add(

int x,

int y)

intdec

(int x,

int y)

intmul

(int x,

int y)

intpower

(int a,

int b)

intmain()

return0;

}

Noip2018 填數遊戲

耳熟能詳,就不多說了 對於乙個不會推式子的蒟蒻,如何在考場優雅地通過此題 手玩樣例,發現對於 n 1 ans 2 m 對於 n 2 ans 4 times 3 或者乾脆打出 n,m le 3 的表 肉眼觀察法,發現似乎有 f n,m 1 3f n,m 但這並不是正確的,但如果你僅僅是這麼認為了,你仍...

NOIP2018提高組初賽

在一條長度為 1 的線段上隨機取兩個點,則以這兩個點為端點的線段的期望長度是 1 3 frac13 31 解析 使用排除法解決問題,當左邊的點在左邊端點是,期望長度為1 2 frac12 21 所以答案一定小於1 2 frac12 21 為了統計乙個非負整數的二進位制形式中 1 的個數,如下 int...

NOIp2018 提高組遊記

上午請假,沒去學校,在家裡刷了十多道題,中午12點出發去杭州 16點到達賓館,和hsy,oyyj嘮了會兒嗑,開始刷模板 晚飯炸雞真香,和xjd學長聊了一會兒,又和鄒sir聊了一會兒,回顧了自己的部落格,22點準時睡覺 失眠了,22 00 02 00,我不知道我是怎麼度過的,作為提高萌新,真的有點緊張...