數論出題組比賽用題 傳球遊戲

2022-05-25 12:18:11 字數 2114 閱讀 1254

思考難度:提高?

**難度:提高?

正解:矩陣快速冪

若令f[i]

[j]f

[i][

j]為第ii

次傳傳到第j

j個人的方案數,易知f[i

][j]

=f[i

−1][

j−1]

+f[i

−1][

j+1]

f[i]

[j]=

f[i−

1][j

−1]+

f[i−

1][j

+1]但是直接這樣遞推o(n

m)o(

nm)會t

letl

e,於是想到用矩陣來加速遞推。

可知初始矩陣中ans

[i][

i]=1

ans[

i][i

]=1,遞推矩陣中a[0

][n−

1]=a

[n−1

][0]

=1a[

0][n

−1]=

a[n−

1][0

]=1a

[i][

i+1]

=a[i

][i−

1]=1

a[i]

[i+1

]=a[

i][i

−1]=

1。進行快速冪即可,時間複雜度o(n

3×lo

g m)o(

n3×l

ogm)

,時間、空間都不允許。

但是,我們通過觀察發現,無論何時,矩陣都是迴圈的,即a=

(a1a

2a3⋯

anan

a1a2

⋯an−

1an−

1ana

1⋯an

−2⋮⋮

⋮⋮a2

a3a4

⋯a1)

a=⎝⎜

⎜⎜⎜⎜

⎛​a1

​an​

an−1

​⋮a2

​​a2

​a1​

an​⋮

a3​​

a3​a

2​a1

​⋮a4

​​⋯⋯

⋯⋯​a

n​an

−1​a

n−2​

⋮a1​

​⎠⎟⎟

⎟⎟⎟⎞

​我們利用此性質。乘出矩陣的一行來,直接將其他的複製好,時間複雜度o(n

2×lo

g m)o(

n2×l

ogm)

,時間複雜度符合要求,但空間超了。

於是我們將矩陣縮為一維,利用迴圈的性質來求值即可,空間複雜度將為o(n

)o(n

),理論上可以通過本題,但還是tle。(18.19點2500ms+)

再來觀察矩陣,發現第一行是a1

a2    a

3    ⋯    a⌊n

+12⌋

−1a⌊n

+12⌋

a⌊n+12⌋

−1⋯    a

3    a2a

1​a2

​a3​

⋯a⌊2

n+1​

⌋−1​

a⌊2n

+1​⌋

​a⌊2

n+1​

⌋−1​

⋯a3​

a2​(偶數自行腦補)

即對稱,所以可以優化一半常數。

但還是tle。。。(18.19點1500ms+)

我們繼續優化,發現矩陣相乘時,若有0,直接跳過,又優化了一點。(18.19點950~1100ms)

考慮觀察一行,發現計算每乙個的時候有重複計算的,我們發現可以用左面對稱和右面對稱來計算,還要考慮n為奇數偶數情況,及i為奇數偶數情況,可優化一半常數(理論上)。

於是就可以700ms通過本題了。(無o

2    o3o

2​o3

​)

數論出題組比賽用題 數列

思考難度 提高?難度 提高?演算法0 暴力 實際得分 0 演算法1 考慮x y 1x y 1x y 1的情況,顯然有an an 1 an 2a n a a an an 1 an 2 廢話 故 an an 1a n times a an an 1 an an an 1 a n times a n a ...

ACM 數論 博弈 (比賽用)

1.bash博弈 巴什博弈 只有一堆n個物品,兩個人輪流從中取物,規定每次最少取乙個,最多取m個,最後取光者為勝。if n m 1 0 cout 後手必勝 2.威佐夫博弈 wythoff game 有兩堆各若干的物品,兩人輪流從其中一堆取至少一件物品,至多不限,或從兩堆中同時取相同件物品,規定最後取...

學長出題 比賽題解 17 10 18

這次比賽由 falldream學長出題,歡迎去他的blog學習!t1 切課本 題意 小 z 厭惡數學,他決定將數學課本切成一塊一塊的。他的課本是乙個 n m 的矩形,小 z 決定切 k 刀,每刀他可以橫著切或者豎著切,但是切成的矩形的長和寬都必須是整數。當然,小 z 不會做出兩次相同的操作。例如 n...