[THUPC2018]生生不息(???)

SB题,写来放松身心。

首先 $n,m\le 5$,这是可以打表的。

本地怎么对于一个 $n,m$ 求答案?此时虽然复杂度不需要太优,但是还是得够快。

一个想法是枚举每个初始状态,不停模拟。因为总状态数只有 $O(2^{nm})$ 种,所以会出现周期。

 如果压缩状态,复杂度是 $O(4^{nm}nm)$。太大了。

但是,虽然一个状态的周期可能很长,但是如果一起考虑所有状态呢?

对于每个状态 $S$,直接模拟它下一轮会变成啥(设为 $T$)。那么连一条 $S\rightarrow T$ 的边。

那么就是问有多少个边走不到 $0$。

可以建反图,计算从 $0$ 能走到多少个点。

复杂度 $O(2^{nm}nm)$。除了 $n=m=5$ 的点大概要跑 10s,其它的都可以 1s 出。

代码就没必要放了。

 

posted @ 2019-07-11 22:57  ATS_nantf  阅读(250)  评论(0编辑  收藏  举报