首页 > 其他分享 >BZOJ 4321 queue2 题解

BZOJ 4321 queue2 题解

时间:2023-07-30 19:55:04浏览次数:47  
标签:geq frac 4321 题解 sum queue2 2x 2G aligned

在硬盘里翻到了当时没推完的这个题,今天补完了最后几步。

题目链接:https://hydro.ac/d/bzoj/p/4321

对任意相邻两个元素差的绝对值不为 \(1\) 的 \(n\) 阶排列计数。

\(\mathcal{O}(n^2)\) 做法是考虑按照值域由小到大逐步插入,记录 \(f_{i,j}\) 为长度为 \(i\) 的排列,一共有 \(j\) 对冲突的。每次考虑插入下一个数,发现还要记录一维当前 \(i\) 和 \(i-1\) 是否相邻这个信息,然后就能转移了。

然后下面是 \(\mathcal{O}(n)\) 的做法。

首先考虑容斥,首先将排列划分成若干极长的值域连续段,如果一段长度为 \(1\) 那么其容斥系数为 \(1\),否则长度为 \(k\) 的连续段容斥系数为 \(2\times (-1)^{k-1}\),这里要乘 \(2\) 是因为有上升和下降两种方式。考虑其 OGF \(F(x)=x-2x^2+2x^3-2x^4+\cdots=x(\frac{2}{1+x}-1)=x\frac{1-x}{1+x}\),枚举一共有 \(n\) 段,即得答案的 OGF \(H(x)=\sum_{n\geq 0}x^n(\frac{1-x}{1+x})^n\),首先如果令 \(G(x)=\sum_{n\geq 0}n!x^n\),其为超几何函数,微分有限,而 \(F\) 是代数形式幂级数,从而 \(H=G(F)\) 微分有限,存在整式递推。

手算一下!

\[\begin{aligned} G'(x)=\sum_{n\geq 0}n!x^{n-1}n\\ x^2G'(x)=\sum_{n\geq 0}n!x^{n+1}n\\ x^2G'(x)+\sum_{n\geq 0}n!x^{n+1}=\sum_{n\geq 1}n!x^{n}\\ x^2G'+xG=G-1\\ x^2G'+(x-1)G+1=0 \end{aligned} \]

凑出这个之后,将 \(F(x)\) 代入 \(x\),然后整体乘 \(F'(x)=\frac{\mathrm{d}F(x)}{\mathrm{d}x}\) 把 \(H'\) 凑出来。

\[\begin{aligned} x^2\frac{\text dG(x)}{\text dx}+(x-1)G+1=0 \\ F(x)^2\frac{\mathrm{d}G(F(x))}{\mathrm{d}x}+(F(x)-1)G(F(x))F'(x)+F'(x)=0 \\ F(x)^2H'(x)+(F(x)-1)H(x)F'(x)+F'(x)=0 \end{aligned} \]

其中 \(F(x)=x\frac{1-x}{1+x},F'(x)=-\frac{x^2+2x-1}{(1+x)^2}\),代入进去并整理可得:

\[\begin{aligned} x^2\frac{(1-x)^2}{(1+x)^2}H'(x)=\frac{-x^4-2x^3-2x+1}{(1+x)^3}H(x)+\frac{x^2+2x-1}{(1+x)^2}\\ (x^5-x^4-x^3+x^2)H'(x)=(-x^4-2x^3-2x+1)H(x)+(x^3+3x^2+x-1) \end{aligned} \]

\(n\geq 4\) 时左右两边提取 \([x^n]\) 可得:

\[(n-4)h_{n-4}-(n-3)h_{n-3}-(n-2)h_{n-2}+(n-1)h_{n-1}=-h_{n-4}-2h_{n-3}-2h_{n-1}+h_n \]

即得整式递推:

\[h_{n}=(n+1)h_{n-1}-(n-2)h_{n-2}-(n-5)h_{n-3}+(n-3)h_{n-4} \]

代码

标签:geq,frac,4321,题解,sum,queue2,2x,2G,aligned
From: https://www.cnblogs.com/do-while-true/p/17591898.html

相关文章

  • bitwarden 私有化部署android无法登陆问题解决
    安卓版bitwarden安装使用中登陆提示“发生错误。Exceptionmessage:java.security.cert.CertPathValidatorException:Trustanchorforcertificationpathnotfound.”这个错误是因为Bitwarden的证书文件中缺少中间证书导致安卓系统的证书校验异常解决方式,生成带证书链的证......
  • CF1855B Longest Divisors Interval 题解
    原题链接:https://codeforces.com/contest/1855/problem/B题意:给定一个正整数n,找到满足该条件的区间[l,r]的长度的最大值:对于任意l<=i<=r,n均为i的倍数(多组数据)。思路:如果n是奇数,答案显然是1,因为任意两个连续的正整数一定会有一个2的倍数。将这一结论进行推广:......
  • Codeforces Round 889 (Div. 2) 题解
    \(6\)题只做出来\(1\)题,损失惨重A.DaltontheTeacher显然,答案一定和最初的不满意人数有关,所以输入的时候统计一下然后,将不满意的人的座位每两个人交换一次即可,交换次数就是答案如果不满意人数是奇数,那么答案还要加\(1\)时间复杂度\(O(n)\)(输入的复杂度)B.LongestD......
  • 【题解】[ABC312G] Avoid Straight Line(容斥,树上统计,dfs)
    【题解】[ABC312G]AvoidStraightLine题目链接[ABC312G]AvoidStraightLine题意概述给定一棵\(n\)个节点的树,第\(i\)条边连接节点\(a_i\)和\(b_i\),要求找到满足以下条件的三元整数组\((i,j,k)\)的数量:\(1\lei<j<k\len\);对于树上任意一条简单路径,都不同时经......
  • CF1855B Longest Divisors Interval 题解
    题意:给定一个数\(n\),求一个连续区间\([l,r]\)使得\(n\)是区间内每个数的倍数,最大化这个区间的长度(多组数据)。思路:逆向思考一波,(如果一个数\(x\)不是\(n\)的因数,那么\(x\)的倍数不能在区间内。举个例子,比如$n$是13,3不是13的因数,\(3,6,9,12\)也就不可能出现......
  • Codeforces Round 889 (Div. 1) 题解
    A1.Dual(EasyVersion)https://codeforces.com/contest/1854/problem/A1题意给定一个长度为\(n\)的序列\(a_1,a_2,\dots,a_n\),你可以做以下操作:选定两个下标\(i,j(1\leqi,j\leqn)\),\(i,j\)可以相同,然后\(a_i\leftarrowa_{i}+a_j\)。要求构造一种操作......
  • HDU 1312 Red and Black 题解
    //注意边界判断,调了好久#include<iostream>#include<queue>usingnamespacestd;#definecheck(x,y)(x<wx&&x>=0&&y<hy&&y>=0)structnode{intx,y;};charroom[23][23];intn,m,wx,hy,num;intdir[4][2]={......
  • Xum题解
    Xum洛谷传送门题意:简化来说就是给你一个奇数\(x\),而你只能使用\(+\)或\(\bigoplus\),让你构造出一个包含\(1\)的数集。Analysis:首先为了得到\(1\),我们一般有两种思路,第一种是构造出\(n\)与\(n+1\)这种“出解情况”,这种思路考场寄掉了,先咕。那么来说说正解思路......
  • Sctf2023 Re 部分题解
    re是谁不复习计网和数据库写reSyclang给出两个文件一个是ir一个是编译器直接看ir即可拿vscode正则匹配替换relpace:(var\d+)\(@exp.([XLRXkey]+)(\[\d\])\)$1.$2$3#(\d+)$1<\+\d+>""(var\d+)\(@exp(.key\[\d+\])\)$1$2LABEL""GOTOgoto#!te......
  • 暑期竞赛配训 Day 1,本蒟蒻的第一篇题解qwq!
    洛谷P8725[蓝桥杯2020省AB3]画中漂流:-[1]读题:在梦境中,你踏上了一只木䇝,在江上漂流。根据对当地的了解,你知道在你下游D米处有一个峡谷,如果你向下游前进大于等于D米则必死无疑。现在你打响了急救电话,T秒后救援队会到达并将你救上岸。水流速度是1m/s,你现在有M点体力......