第二十次CCF计算机软件能力认证

  1. 拓扑排序
  2. 对每个点对(A)(B),计算它们分别到(O)的距离(|OA|)(|OB|),以及它们之间距离(|AB|).
    如果(angle OAB)或者(angle OBA)为钝角,那么答案就是(|AB|).
    使用面积公式计算(O)(|AB|)的距离,如果大于或等于半径,答案也是(|AB|).
    否则距离是两条切线加一段弧,切线长度为(sqrt{|OA|^2-r^2})(sqrt{|OB|^2-r^2}).
    使用余弦定理计算(angle AOB),减去(arccosdfrac r{|OA|})(arccosdfrac r{|OB|}),即为弧对应的圆心角.
  3. 动态规划,(dp[i][j][k][p])表示长度为(i),密文对应自动机状态为(j),明文对应Trie树节点为(k),当前页数为(p).
    注意对每对(k)(p),可以转移的字符是有限制的.可以计算状态数和转移数均为(O(nm|s|^2)).
原文地址:https://www.cnblogs.com/Heltion/p/13663647.html