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} ]

  • 相关阅读:
    Numpy数据处理函数
    数据库-创建表
    描述统计学:表格法和图形法
    最短路 || POJ 1511 Invitation Cards
    搜索 || DFS || UOJ 146 信息传递
    最短路 || UOJ 19 寻找道路
    最短路 || POJ 1847 Tram
    博弈论
    筛选法 || POJ 3292 Semi-prime H-numbers
    团队第一次作业
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/12262566.html
Copyright © 2011-2022 走看看