zoukankan      html  css  js  c++  java
  • [THUPC2018]生生不息(???)

    SB题,写来放松身心。

    首先 $n,mle 5$,这是可以打表的。

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

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

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

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

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

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

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

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

    代码就没必要放了。

  • 相关阅读:
    回溯算法总结
    第四章总结
    第四章编程总结
    动态规划总结:
    第三章实践心得
    分治算法体会
    第二章上机实践总结
    代码规范与《数学之美》读后感
    第二次c++作业
    第一次博客作业
  • 原文地址:https://www.cnblogs.com/1000Suns/p/11173116.html
Copyright © 2011-2022 走看看