細胞自動機(矩陣優化)

2021-08-21 11:27:07 字數 741 閱讀 4795

description

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

如下圖,n=5,m=3,d=1,一次操作將把圖a變成圖b。比如,與格仔3距離不超過1的格仔(即格仔2,3,4)在操作之前的值分別是2,2,1,因此從 操作後格仔3的值為(2+2+1)mod 3=2。

input

第一行包含4個整數n,m,d,k。第二行包含n個0..m-1的整數,即各格仔的初始值。

output

輸出一行,包含n個0..m-1的整數,即k次操作後各格仔的值。

分析:直接開500x500的矩陣會爆掉,手寫一下就會發現其實相伴矩陣每一行都是上一行平移乙個單位得到的,所以縮小為一維,直接^k-1次方,然後和原始矩陣乘上就可以了。

#include#include#includeusing namespace std;

typedef long long ll;

const int maxn=501;

int n,mod,d,k;

struct matrix

friend matrix operator*(matrix a,matrix b)

return s;

}int main()

java實現細胞自動機

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

矩陣快速冪(細胞自動機,LA 3704)

樸素的矩陣乘法o n 3 會超時。但是因為這個矩陣是迴圈矩陣,根據迴圈矩陣的性質 迴圈矩陣 迴圈矩陣 迴圈矩陣 所以只用算出第一行,然後根據迴圈矩陣的性質就可以遞推出下一行,進而得到整個迴圈矩陣。時間複雜度降為o n 2 如果遇到一些模板題卻超時就要好好想一想這道題跟模板題到底 不一樣了,進而才能發...

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

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