zoukankan      html  css  js  c++  java
  • 一类排列问题

    问题1

    题意:
    给定(n),求有多少个(n)排列,满足相邻两项绝对值大于(1)

    将位置看作,对于点(i,i+1),将(|a_i-a_{i+1}|)看作边
    考虑容斥,钦定边集不合法

    考虑单个连通块的多项式(f(x)=x-2x^2+2x^3-2x^4+cdots=xfrac{1-x}{1+x})

    对于点数大于等于(2)的,有正反两种排列顺序

    枚举连通块的个数
    (F(x)=sumlimits_{i=0}^{infty} i!f(x)^i)

    对于一种分段的方法,确定每段最小值的顺序,即可唯一得到排列

    那么答案为([x^n]F(x))

    (g(x)=sumlimits_{i=0}^{infty} i!x^i)
    注意到(x^2frac{dg(x)}{dx}+(x-1)g(x)+1=0)

    [egin{aligned} &frac{dg(x)}{dx}=frac{(1-x)g(x)-1}{x^2}\ &frac{dg(f(x))}{df(x)}=frac{(1-f(x))g(f(x))-1}{f(x)^2}\ &frac{dg(f(x))}{dx}=frac{df(x)}{dx}cdot frac{(1-f(x))g(f(x))-1}{f(x)^2}\ end{aligned}]

    (g(f(x))=F(x),f(x)=xfrac{1-x}{1+x})带进去

    [egin{aligned} &frac{dF(x)}{dx}=frac{1-2x-x^2}{x^2-2x^3+x^4}(frac{1+x^2}{1+x}F(x)-1)\ &(x^2-x^3-x^4+x^5)frac{dF(x)}{dx}=(1-2x-2x^3-x^4)F(x)+x^3+3x^2+x-1 end{aligned}]

    通过该式容易得到线性递推

    问题2

    题意:
    给定(n)(m),求有多少个(n)排列,满足不存在长度超过(m)的相邻两项绝对值等于(1)

    定义:若区间内相邻两项绝对值等于(1),则称其为连续区间

    求不存在长度为(m+1)的连续区间,钦定有(x)(m+1)的连续区间(可以相交),容斥系数为((-1)^{x})
    考虑钦定连续区间后,排列的方案数

    观察:若两个连续区间有交,则区间并也为连续区间

    将有交的连续区间合并
    (y)为连续区间的个数(合并后的,这里长度不一定为(m+1)),(z)为未被任意区间包含的位置个数
    方案数为((-1)^{x}(y+z)!2^y)

    以下区间均指合并后的区间

    (f(i,j,k))表示把前(i)个点分成(j)个区间和(k)个无限制点的容斥系数和,
    (g(i,j,k))表示在上述条件下(i)作为区间末尾的容斥系数和

    [egin{aligned} &g(i,j,k)=-sumlimits_{p=i-m}^{i-1}g(p,j,k)-f(i-m-1,j-1,k-1)\ &f(i,j,k)=g(i,j,k)+f(i-1,j,k-1)\ end{aligned}]

    答案为

    [sumlimits_{j=0}^nsumlimits_{k=0}^n f(n,j,k)cdot 2^jcdot k! ]

    发现(j)这一维没啥用

    [egin{aligned} F(i,k)=sumlimits_{j=0}^n f(i,j,k)cdot 2^j\ G(i,k)=sumlimits_{j=0}^n g(i,j,k)cdot 2^j\ end{aligned}]

    [egin{aligned} &G(i,k)=-sumlimits_{p=i-m}^{i-1}G(p,k)-2cdot F(i-m-1,k-1)\ &F(i,k)=G(i,k)+F(i-1,k-1)\ end{aligned}]

    答案为

    [sumlimits_{k=0}^n F(n,k)cdot k! ]

    问题3

    定义连续区间为相邻两项差为(1),给定(n,k),求有多少个(n)排列恰好有(k+1)段极大连续区间

    考虑容斥
    (f_i)为恰好有(i)段极大连续区间的方案数
    (g_i)为钦定(i)段的方案数(即钦定断点,段可能不为极大连续区间)

    在求得({g_i})后,通过如下方式还原({f_i})
    为方便表示,下面将(f,g)数组整体左移一位,此时表示至多(i)个满足(|a_j-a_{j+1}|>1)的位置
    那么有(g_i=sumlimits_{jle i}{n-1-jchoose i-j}f_j)
    这不是标准的二项式反演形式,不过我们可以改写成:(g_icdot i!cdot (n-1-i)!=sumlimits_{jle i}{ichoose j}f_jcdot j!cdot (n-1-j)!)
    (G_i=g_icdot i!cdot (n-1-i)!,F_i=f_icdot i!cdot (n-1-i)!)
    ({G_i},{F_i})间是标准的二项式反演形式

    考虑求({g_i})
    (g_k=k![x^n](x+2x^2+2x^3cdots)^k=k![x^n](frac{2x}{1-x}-x)^k)
    将括号拆开能化成卷积形式

  • 相关阅读:
    TortoiseSVN 实现文件的移动
    CSS选择器
    聚合报告90%参数说明
    JMeter响应断言详解
    测试结果分析
    Selenium+TestNG+Java报错:org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:40)
    在IntelliJ IDEA通过Maven添加依赖无效
    CentOS下安装TestLink
    Mysql存储过程生成指定格式的订单号
    Mysql使用函数生成指定随机字段内容
  • 原文地址:https://www.cnblogs.com/Grice/p/14056888.html
Copyright © 2011-2022 走看看