zoukankan      html  css  js  c++  java
  • 杂题

    题意

    给定(n),对于(kin[0,n)),分别计算对于排列({1,2,cdots,n}),进行最多(k)次操作,每次选择一个数字拿到前面或后面,形成的排列个数
    (nle 1000)

    做法

    最多进行(k)次操作等价于排列中最长上升子段长度(ge n-k)

    固定(k),下面考虑计算排列中最长上升子段长度(le k)的方案数
    直接做显然不好做,考虑构造容斥系数
    我们想通过egf得到答案,(ans=[x^n]sumlimits_{i=1}^{infty}(sumlimits_{j=1}^{n}f_jfrac{x^j}{j!})^i)
    构造满足条件(sumlimits_{i=1}^{infty}(sumlimits_{j=1}^{n}f_jx^j)^i=sumlimits_{i=1}^k x^i)
    (F(x)=sumlimits_{i=1}^n f_ix^i)
    (egin{aligned} sumlimits_{i=1}^{infty}F(x)^i&=sumlimits_{i=1}^k x^i\ 1+sumlimits_{i=1}^{infty}F(x)^i&=sumlimits_{i=0}^k x^i\ frac{1}{1-F(x)}&=frac{x^{k+1}-1}{x-1}\ F(x)&=1-frac{x-1}{x^{k+1}-1}\ F(x)&=sumlimits_{ige 0}x^{(k+1)i+1}-sumlimits_{ige 1}x^{(k+1)i}\ end{aligned})
    由于(F(x))有效位置并不多,暴力计算即可
    (O(n^2lnn))

  • 相关阅读:
    poj 2955 Brackets
    HDU 3790 最短路径问题
    畅通工程续
    HDU 1896 六度分离
    HDU
    第九周作业
    第八周作业
    2019年春季学习第七周学习总结
    2019春季学习总结第六周作业
    第五周作业
  • 原文地址:https://www.cnblogs.com/Grice/p/13908652.html
Copyright © 2011-2022 走看看