zoukankan      html  css  js  c++  java
  • 【UOJ #214】合唱队形【min-max容斥】【DP】

    Description

    请去传送门阅读。

    Solution

    考虑(Min-Max)容斥,我们要求的是所有长为(m)的串成功匹配的时间的最小值的期望,将这个作为(Min(S))

    那么

    [ans=sum_{Tsubseteq S}(-1)^{|T|-1}E(Max(T)) ]

    (Max(T))就是(T)中所有串全部匹配的期望时间,将其转化为所有时刻没有成功匹配的概率之和,在(t)时刻没有成功匹配的概率,我们通过容斥没有匹配的位置数量来完成,设(g(T))表示(T)中所有串全部匹配需要的课程数,(sum)为课程总数,即:

    [Max(T)=sum_{t=0}^{infty}sum_{i=0}^{g(T)}(-1)^{i+1}inom{g(T)}{i}(frac{sum-i}{sum})^t\ =sum_{i=0}^{g(T)}(-1)^{i+1}inom{g(T)}{i}sum_{t=0}^{infty}(frac{sum-i}{sum})^t\ =sum_{i=0}^{g(T)}(-1)^{i+1}inom{g(T)}{i}frac{sum}{i} ]

    于是直接枚举(T)即可达到(mathcal O(2^{n-m}nm))的复杂度。期望得分(50)分(我修改了(subtask))。

    注意到(g(T))相同的(T)贡献是完全相同的,考虑先计算出(g(T)=k)(T)的个数,考虑(dp),因为只有前(m)个串会影响当前串对(g(T))的影响,所以设(f_{i,s,j})表示考虑了前(i)个串,前(m)个串是否在(T)中的状态为(s)(g(T)=j)(T)的总数,直接枚举当前位置的串是否选择转移即可。复杂度为(mathcal O(2^m n^2m)),与上一部分结合即可拿到满分。

    code

  • 相关阅读:
    每行显示多少个
    CentOS挂载NTFS格式硬盘
    BAT教程 :第一节(批处理基础)
    BAT教程 第三节(FOR命令中的变量)
    BAT教程 :第二节(for命令详解 )
    USB设备读取的相关问题
    BAT教程 :第四节(批处理中的变量)
    内核级HOOK的几种实现与应用
    书籍链接
    BAT教程 :第五节(set命令详解)
  • 原文地址:https://www.cnblogs.com/tqxboomzero/p/14613608.html
Copyright © 2011-2022 走看看