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))

  • 相关阅读:
    UVA247 电话圈 Calling Circles
    Python开发之路
    Day 8-模块
    Homework
    Day 7- 装饰器
    Day 6-文件操作的其他方法 迭代器 生成器
    数据-进制
    Day 5-变量与高阶函数
    Day 4-集合、百分号拼接及函数
    Day 3-Python列表、元祖、词典
  • 原文地址:https://www.cnblogs.com/Grice/p/13908652.html
Copyright © 2011-2022 走看看