automaton专题

poj 3150 Cellular Automaton(矩阵快速幂)

http://poj.org/problem?id=3150 大致题意:给出n个数,问经过K次变换每个位置上的数变为多少。第i位置上的数经过一次变换定义为所有满足 min( abs(i-j),n-abs(i-j) )<=d的j位置上的数字之和对m求余。 思路: 我们先将上述定义表示为矩阵 B =  1 1 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1

UVA - 1386 Cellular Automaton

题目:点击打开链接 题意:一个细胞自动机包含n个格子,每个格子的值都会变成它距离不超过d的所有格子的值,求最后的结果 思路:这个是循环矩阵,可以用O(n^2)的时间过掉 #include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef

LA 3704 Cellular Automaton (矩阵快速幂)

LA 3704 Cellular Automaton 题目大意: 一个环被分成n份,每个格子取值为0~m-1.给定距离d,则每次操作后每个格子的值为与其距离不超过d的格子操作前的值之和除以m的余数. ( 1≤n≤500,1≤m≤106,0≤d<n/2,1≤k≤107 1\leq n \leq 500,1\leq m \leq 10^6,0\leq d < n/2,1\leq k \leq 1

用Verilog实现最简一维细胞自动机(one-dimensional cellular automaton)

首先,我们通过观察上表可以很容易的发现一个规律,center的下一个状态由center的左邻居和右邻居异或而成。center的下一个状态列:01011010,转换为十进制即为90,所以我们将其命名为rule 90. 知道了下一状态产生的规则后,我们就根据其规则实现下面这个电路: 在这个电路中,我们创造512个细胞系统(q[511:0]),在每个时钟周期前进一个步长。load输入将输出q加载