题目名称 1494. [UVa 1386] 细胞自动机
输入输出 cellularautomaton.in/out
难度等级 ★★★
时间限制 5000 ms (5 s)
内存限制 256 MiB
测试数据 10
题目来源 Gravatarcstdio 于2014-01-19加入
开放分组 全部用户
提交状态
分类标签
UVa 快速幂 矩阵运算
分享题解
通过:18, 提交:35, 通过率:51.43%
GravatarZooxTark➲ 100 0.631 s 13.67 MiB C++
GravatarZooxTark➲ 100 0.634 s 13.67 MiB C++
GravatarZooxTark➲ 100 0.650 s 13.67 MiB C++
GravatarZooxTark➲ 100 0.988 s 13.67 MiB C++
GravatarZXCVBNM_1 100 2.312 s 2.23 MiB C++
GravatarZXCVBNM_1 100 2.378 s 2.23 MiB C++
Gravatarcstdio 100 2.474 s 0.32 MiB C++
Gravatar绕着指尖 100 3.447 s 6.06 MiB C++
Gravatar一個人的雨 100 4.119 s 0.32 MiB C++
Gravatar一個人的雨 100 4.148 s 0.32 MiB C++
关于 细胞自动机 的近10条评论(全部评论)
循环矩阵+矩阵快速幂,超级神速时间rank1
GravatarZooxTark➲
2020-03-01 16:12 2楼
神奇的循环矩阵
欢迎访问窝的起步blog----http://blog.csdn.net/qq_27138357/article/details/46908757
Gravatar一個人的雨
2015-07-16 14:00 1楼

1494. [UVa 1386] 细胞自动机

★★★   输入文件:cellularautomaton.in   输出文件:cellularautomaton.out   简单对比
时间限制:5 s   内存限制:256 MiB

【题目描述】

细胞自动机是指一群处在一个个有特定排列方式的格子中的细胞,它们随着离散的时间演变,每一次演变中,每个细胞都遵循一系列规则,这些规则描述了细胞的新状态和原先周围细胞状态间的关系。细胞自动机的阶数是它包含的细胞个数。这些细胞被命名为1~n。

细胞的阶数是它可能所处的状态个数。通常一个m阶细胞的合法状态是整数0,1,...,m-1.

细胞自动机的基本属性之一是它的格子分布。在这个问题中,我们考虑一种特殊的细胞自动机——环形细胞自动机,包含环形分布的n个m阶细胞。我们将它记为n,m-自动机。

在n-m自动机中,两个细胞i,j之间的距离被定义为min(|i-j|,n-|i-j|)。一个细胞的d-临域指和这个细胞的距离不大于d的细胞集合。

在每次d-演变中,每个细胞的值都同时被新的值取代。d-演变后第i个细胞的值是原先它的d-临域中细胞的值之和模m。

下图显示了一个5-3自动机的一次1-演变。

现在请你计算一个n,m-自动机在k次d-演变后的状态。

【输入格式】

输入文件包含不超过15组数据。

每组数据有2行:

第1行是4个整数n,m,d,k(1<=n<=500,1<=m<=1000000,0<=d<=n/2,1<=k<=10000000)

第2行是n个整数(在区间[0,m-1]内),描述了细胞自动机的初始状态。

【输出格式】

对每组数据,输出一行n个整数,分别描述n-m自动机在k次d-演变后细胞1,2,...,n的状态。

【样例输入】

5 3 1 1
1 2 2 1 2
5 3 1 10
1 2 2 1 2

【样例输出】

2 2 2 2 1
2 0 0 2 2

【来源】

UVa 1386 Cellular Automaton

刘汝佳,《算法竞赛入门经典训练指南》表2-12