細胞自動機(思博 模擬)

2021-09-25 12:16:19 字數 2457 閱讀 5101

題目描述:

細胞自動製造公司最近剛剛獲得批量生產零件的新工藝專利。它的方法使

用到包含兩種細胞狀態的二維網格,每個單元的細胞要麼為空,要麼為滿。當然,

具體的細節是專有的。

最初,網格中的一組單元被填充為需要複製的細胞副本。進過一系列離散的步

驟,網格中的每個單元會根據自身及附近的八個單元的狀態同步進行細胞狀態更

新。如果這九個單元中有奇數個位置的細胞是滿的,那麼這個單元的下乙個狀態

也是滿的,否則會是空的。

然而,乙個 bug 已經蟄伏在工藝中了。在每次更新單元狀態之後,網格中某一

個單元的狀態可能自動變化。其中乙個細胞在第一次狀態更新後出現了自動變化,

另乙個細胞在第三次狀態更新後出現了自動變化。

很不幸,最初的細胞模式丟失了,只有 (可能受到 bug 影響的) 複製結果保留

了下來。你能否編個程式確定可能的最小的非空的初始細胞模式來產生給定的最

終模式呢?

輸入描述:

第一行包含兩個整數 w(1≤w≤300)和 h(1≤h≤300),其中 w 和 h 表示最終模式

的邊框寬度與高度。接下來 h 行,每行包含 w 個字元,描述了最終的模式。每個字

符要麼是』.』(表示該單元為空),要麼是』#』(表示該單元為滿) 。

保證在第一行、最後一行、第一列、最後一列均存在至少乙個單元是滿的。

輸出描述:

輸出最小的非空的可能產生最終模式的初始模式,這裡假設每個階段至多會有乙個單元狀態自動變化。模式的大小取決於邊框內的區域。如果由多種可能的

最小的非空的初始模式,那麼任意一種答案都是可接受的。請你使用字元』.『表示空

的單元,使用』#'表示滿的單元。請你用必須要使用的最小行數和列數來輸出這個

模式。樣例輸入:

10 10

.#…#…#

##…##…##

##.#.##…

##.#.##…

.#…#####

…##…#.#

…###.

##.#.##…

#…#…#…#

##…##…##

樣例輸出:

.#出題人太菜,寫不出 spj,所以資料理論上只有唯一答案,如果出鍋,出題人將

手動評測。

有 10%的資料 w,h<=3

有 20%的資料 w,h<=10

另有 10%的資料沒有 bug

有 100%的資料 w,h<=300

題解:來自szp大佬

首先考慮每次操作後,無論是否有 bug, 被染色的部分都會向四周擴張一格。

所以操作次數是 o(n)的。

如果沒有 bug,我們可以從左上到右下推出之前的版本,即

x [i

][j]

=y[i

−1][

j−1]

xorx

[i−2

][j−

2]xo

rx[i

−2][

j−1]

xorx

[i−2

][j]

xorx

[i−1

][j−

2]xo

rx[i

−1][

j−1]

xorx

[i−1

][j]

xorx

[i][

j−2]

xorx

[i][

j−1]

x[i][j]=y[i-1][j-1] xor x[i-2][j-2]xorx[i-2][j-1]xorx[i-2][j]xorx[i-1][j-2]xorx[i-1][j-1]xorx[i-1][j]xorx[i][j-2]xorx[i][j-1]

x[i][j

]=y[

i−1]

[j−1

]xor

x[i−

2][j

−2]x

orx[

i−2]

[j−1

]xor

x[i−

2][j

]xor

x[i−

1][j

−2]x

orx[

i−1]

[j−1

]xor

x[i−

1][j

]xor

x[i]

[j−2

]xor

x[i]

[j−1

]如果有 bug,我們考慮點(i,j)bug 的影響,他會影響下一行的(i+1,j)(i+1,j+1)…(i+1,j+3k)(i+1,j+3k+1)

那麼對於(i+1,w+1)和(i+1,w+2)如果存在 1,那麼第 i 行必然存在 bug,然後我們先列後行再做一遍找出

bug 所在列,把 bug 取反後繼續做。

如果現在的行列或長度等於 1,則可以停止,如果在清除完乙個錯誤後繼續檢查還會出現錯誤,

則已經到了最簡形式。

java實現細胞自動機

一丶 先說說這個題目吧,還是第一次接觸這種型別的題目 生命遊戲中,對於任意細胞,規則如下 每個細胞有兩種狀態 存活或死亡,每個細胞與以自身為中心的周圍八格細胞產生互動。當前細胞為存活狀態時,當周圍低於2個 不包含2個 存活細胞時,該細胞變成死亡狀態。模擬生命數量稀少 當前細胞為存活狀態時,當周圍有2...

細胞自動機(矩陣優化)

description 乙個細胞自動機包含n個格仔,每個格仔的取值為0 m 1。給定距離d,則每次操作後每個格仔的值將變為到它距離不超過d的所有格仔在操作之前的值之和除以m的餘數,其中i和j的距離為min。給定n,m,d,k和自動機各格仔的初始值,你的任務是計算k次操作以後各格仔的值。如下圖,n 5...

Game of Life 細胞自動機?生命遊戲?

生命遊戲 game of life 是二維的細胞自動機,由劍橋大學的數學家 john horton conway 於 1970 年所提出的。他構想 一群細胞於平面中以一定的條件成長時,會受到什麼制約 他認為細胞不會無限制的成長,於是他定義細胞在過度孤單與擁擠時會死亡,這樣的構想使他提出比 john ...