題意
給定一個由黑白組成的網格。
保證黑子四聯通。
規定一次操作為使用最初的網格圖替換當前網格圖的所有黑色格子。
操作 \(k\) 次。
問最終有多少個黑色連通塊,對 \(10 ^ 9 + 7\) 取模。
\(k \le 10 ^ {18}\)。
Sol
先不難注意到這個東西只和原網格圖是否左右聯通和上下聯通有關。
注意到若左右上下都聯通,那麼最終只有一個連通塊,若都不聯通,那麼最終的連通塊數為 \(cnt ^ {k - 1}\)。
考慮只有左右或者只有上下聯通的情況。
不難想到那個很 \(trivial\) 的結論,即 連通塊數 = 點數 - 邊數。
考慮進行的最後一次替換操作,那麼顯然 連通塊數 即為 點數 減去 圖中左右黑色點相鄰的對數。
設點數為 \(a\),黑色點相鄰對數為 \(b\),最初的圖的黑色點相鄰對數為 \(c\),最初的圖的左右聯通相鄰對數為 \(d\)。
不難發現:\(b' = a \times c + b \times d\)。
不妨構造矩陣:
\[\begin{pmatrix}
a & b
\end{pmatrix}
\times
\begin{pmatrix}
c \cr
d
\end{pmatrix}
\]
注意到因為每次都是乘一個原始矩陣,因此 \(b\) 和 \(c\) 直接合並不管就行了。
因此答案為:
\[\begin{pmatrix}
a & b \cr
0 & d
\end{pmatrix} ^ {k - 1}
\]
複雜度 \(O(\log k)\)。