zoukankan      html  css  js  c++  java
  • 「考试」省选18

    T2炸了。

    T1
    原题。
    考虑建成(trie)
    然后再每个(Trie)节点挂一个结尾链。
    然后依次加入并且使得(Trie)的父子之间连边即可。

    T2
    (MIM)的题。
    设:(S[i][S])为从1出发,到达(i),不经过重复节点,经过的结点集合为(S)的全部路径方案。
    然后直接用(MIM)合并即可。

    T3
    60分的暴力很好写。
    考虑正解。
    首先二分答案。
    考虑(check)
    对于每一个位置设(dp[i][j][k])为第(i)个点的子树中i进入时花费为(j),出去时花费为(k)是否存在。
    空间不允许。
    直接开成二元组。
    然后两个儿子排序之后用单调指针合并。
    最终任何一个节点的大小不会超过所有叶子节点的个数乘2.
    这样直接判断根节点是否存在子树即可。

    T4
    期望题。
    首先从0开始编号,方便取模。

    [dp[i][j]$$表示剩下$i$个人,最后一枪打在$j$身上,0号存活的概率的期望。 $$dp[1][0]=1$$,$dp[n][(k-1)%n]$是答案。 考虑如何$dp$,枚举被打的这个人是否死亡。 $$dp[i][j]=egin{cases}&frac{1}{2}(dp[i-1][j+k-1 mod (i-1)]+dp[i][j+k mod i])&j>0\&frac{1}{2}dp[i][j+k mod i]&j=0end{cases}]

    因为0号不能死。
    然后发现这个转移是个图。
    缩点之后变成了(DAG)
    然后 对于若干个环内进行高斯消元的话再进行拓扑图(dp)即可。
    这样复杂度最劣是(O(n^4))的。
    考虑这个图中只含有简单环((n)个点(n)条边的环)。
    这种情况是可以直接系数递推的。
    但是由于转移实在是太过简单我就直接给展开了。
    观察(dp)转移。
    我们发现转移成环一定是同层转移。
    设转移的环的点个数为(a),那么:(ak=lcm(i,k))
    也就是说:

    [a=frac{i}{gcd(i,k)} ]

    同时注意到环不相交,所以环的个数:

    [t=frac{i}{frac{i}{gcd(i,k)}}=gcd(i,k) ]

    对于每个环分别系数递推即可。
    然后写一下直接展开的式子:

    [dp[i][j]=frac{dp[i][j]}{2^a}+sumlimits_{l=1}^{a}frac{dp[i-1][j+lk-1 mod (i-1)]}{2^l} ]

    消项得到:

    [dp[i][j]=frac{2^a}{2^a-1}sumlimits_{l=1}^{a}frac{dp[i-1][j+lk-1 mod (i-1)]}{2^l} ]

  • 相关阅读:
    jQuery 源码解析(二十四) DOM操作模块 包裹元素 详解
    jQuery 源码解析(二十三) DOM操作模块 替换元素 详解
    jQuery 源码解析(二十二) DOM操作模块 复制元素 详解
    jQuery 源码分析(二十一) DOM操作模块 删除元素 详解
    jQuery 源码分析(二十) DOM操作模块 插入元素 详解
    jQuery 源码分析(十九) DOM遍历模块详解
    python 简单工厂模式
    python 爬虫-协程 采集博客园
    vue 自定义image组件
    微信小程序 image组件坑
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/12262566.html
Copyright © 2011-2022 走看看