zoukankan      html  css  js  c++  java
  • CF1528F

    题意

    对于一个长度为(n)的正整数序列({a_i}_{i=1}^n),定义其合法当且仅当存在一个长度为(n)的非负整数序列({b_i}_{i=1}^n),使得({a_i+b_i}_{i=1}^n)构成一个(n)阶排列。
    对于任意合法的序列({a_i}_{i=1}^n),一个长度为(K)的序列({c_i}_{i=1}^K),定义其合法当且仅当:(forall iin[1,K]),满足(a_{c_i}=a_{c_1})
    (nle 10^9,Kle 10^5)

    做法

    引理:序列({a_i}_{i=1}^n)合法当且仅当,有(n)个车位,第(i)个人想停的位置为(a_i),若已经存在车了,则走到下一个空位置。

    容易证明。

    这是经典的parking function问题,方法是构造一个环,有(n+1)个位置,令(a_iin[1,n+1]),这样总方案数为((n+1)^n),合法的概率为(frac{1}{n+1}),故合法方案数为((n+1)^{n-1})

    这里,(a_{c_1})是多少并不重要(在答案基础上乘上(n+1),由于最后还要除(n+1),所以根本不需要管),枚举其个数,有:

    [ans=sumlimits_{i=0}^n {nchoose i}i^Kn^{n-i} ]

    这是个经典问题,容易化简得到:

    [sumlimits_{j=0}^K egin {Bmatrix} K \ jend {Bmatrix}j!{nchoose j}(n+1)^{n-j} ]

    求一行的斯特林数容易做到(O(Klog K))

    故总复杂度为(O(Klog K))

  • 相关阅读:
    信号灯的典型应用
    字符串过滤
    做一些学习的事情一定要坚持下去
    昨天的你造就今天的你,今天的你准备怎么造就明天的你呢?
    vue中计算属性,方法,侦听器
    vue模板语法
    Vue实例的生命周期钩子
    VUE实例
    简单的组件间传值
    前端组件化
  • 原文地址:https://www.cnblogs.com/Grice/p/14816501.html
Copyright © 2011-2022 走看看