zoukankan      html  css  js  c++  java
  • 模拟78 题解

    A. 串串香

    送分题。

    发现用$kmp$复杂度也是$O(n)$,和直接哈希的复杂度是一样的。

    所以直接双模哈希硬干就完了。

    B. 糊涂图

    在不加边的情况下,因为存在拓扑序,问题是简单的。

    所以可以先处理出不加边情况下,每个点达哥获胜的概率,其实这个数组也表示走奇数步后无路可走的概率,设为$f_i$。

    显然有$f_i=frac{sum (1-f[to])}{out_i}$,可以在拓扑序的倒序上简单递推。

    考虑当前加边$(i,j)$。

    那么可以将达哥获胜的概率拆分为:

    1.经过点$i$并且走向$j$获胜的概率,

    2.经过点$i$并且不走向$j$获胜的概率,

    3.不经过点$i$获胜的概率。

    那么当前已经关注从起点走到$i$的概率。

    注意这里关注的其实是从起点到$i$走偶数步和奇数步分别的概率,因为达哥和B哥无名氏对应着不同的结果。

    设上述两个数组分别为$p0_i$和$p1_i$,均可以在拓扑序的正序上简单递推。

    处理出这三个数组,已经可以暴力推答案。

    仍然考虑当前加边$(i,j)$

    设$h$为达哥的第三部分胜率,有$h=f_s-f_i*p0_i-(1-f_i)*p1_i$

    设$F$表示走到$i$之后奇数步后无路可走的概率,有$F=frac{out_i}{out_i+1}*f_i+frac{1}{out_i+1}*(1-f_j)$

    那么$ans=p0_i*F+p1_i*(1-F)+h$

    推一推式子,可以把其中关于$j$的项移出来。

    于是枚举$i$就可以统计出平均数和最大值。

    C. 木叶下

    手玩可以发现一些性质:

    当不存在环,答案为树的直径除二向下取整再加一。

    当存在环,答案为环上伸出的最长链。

    首先预处理出需要的最长链,

    然后分类讨论:

    在$1$为根的树上$u$,$v$是祖先关系。那么$u$ $v$需要特判,中间只访问除父链和子链。

    在$1$为根的树上$u$,$v$的$dfs$序无交集。那么$u$ $v$ $lca$需要特判,中间只访问除父链和子链。

    所以用一个倍增数组维护链上的最值,端点特判就可以了。

  • 相关阅读:
    Spring bean的自动装配
    JSP三大指令
    JSP九大内置对象
    Java异常的捕获顺序(多个catch)
    Integer.parseInt(s)和Integer.valueOf(s)之间的区别
    mysql忘记密码(MySQL5.7)
    java的四种内部类
    内存泄露查询
    深度优先和广度优先比较
    循环队列
  • 原文地址:https://www.cnblogs.com/skyh/p/11699889.html
Copyright © 2011-2022 走看看