首页 > 其他分享 >[ARC140F] ABS Permutation (Count ver.) 题解

[ARC140F] ABS Permutation (Count ver.) 题解

时间:2024-02-27 22:02:29浏览次数:23  
标签:Count 方案 ver cdot 题解 sum 2x choose frac

发现不太好直接求,考虑将 \(P\) 映射到 \(P^{-1}\) 上,这样题目中的条件就变成了 \(|P_i-P_{i+M}|=1\)。因此我们可以对模 \(M\) 的每个剩余系做 \(M=1\) 的情况,然后最后快速幂合并。

考虑 \(M=1\) 的情况怎么做。记 \(f_i\) 表示 \(K=i\) 的方案数,考虑容斥,再记 \(g_k\) 表示钦定 \(k\) 个间隔满足两边的数差为 \(1\) 的方案数,二项式反演可得:

\[f_{i}=\sum_{j=i}^n{j\choose i}\cdot(-1)^{j-i}\cdot g_{j} \]

这个东西是可以 NTT 算的,具体的方法是将 \(f,g\) 分别反转变成可以多项式乘法的形式:

\[f_{i}=\sum_{j=0}^{i}{n-j\choose n-i}\cdot(-1)^{i-j}\cdot g_{j} \]

考虑怎么求 \(g_k\)。我们对于每个选出的间隔将其两边的数合并,这样每个剩余系就被分成了若干段,每段中的数连续,总共有 \(N-k\) 段。关于值的分配,方案数显然为 \((N-k)!\cdot 2^\text{段长大于一的段的个数}\) 最后给 \(g_k\) 乘上即可。

考虑一个大小为 \(n\) 的剩余系划分方案怎么求。记 \(g'_k\) 表示钦定 \(k\) 个间隔的方案数,我们可以写出 \(g'\) 的生成函数:\(g'_k=[x^n]F(x)^{n-k}\),其中 \(F(x)=x+2x^2+2x^3+\dots\)。发现 \(F(x)=\frac{2x}{1-x}-x\),这时候可以想到一个经典的式子:

\[\left(\frac{1}{1-x}\right)^k=\sum_{n=0}^{\infty}{n+k-1\choose n}x^n \]

(通过对 \(\frac{1}{1-x}=\sum_{i\ge0} x^i\) 两边求 \(k-1\) 次导数得到)

故:

\[[x^n]F(x)^{n-k}=\sum_{i=0}^{n-k}{n-k\choose i}\cdot{n-i-1\choose k}\cdot(-1)^i\cdot2^{n-k-i} \]

这个东西可以 NTT 算。最后由于 \(n\) 只有两种可能值,分别求出 \(g'\) 再做个快速幂合并即可。

然后就做完了。

code

标签:Count,方案,ver,cdot,题解,sum,2x,choose,frac
From: https://www.cnblogs.com/zifanoi/p/18038499

相关文章

  • [ARC112F] Die Siedler 题解
    题目传送门人类智慧题。发现\(2\)操作肯定是不劣的,所以能换则换。考虑将手上的牌转换成一个多进制的数,这样\(2\)操作就是其进位方法,\(1\)操作就是将当前的数加上牌包对应的数,答案就是其各位数字之和,不难发现其值为:\[\sum_{i=1}^nc_i\times2^{i-1}\times(i-1)!\]再考......
  • 2024.2.27模拟赛T2题解
    题目有一个神奇的结论\(\foralla<b<c,a\oplusc>min(a\oplusb,b\oplusc)\)然后就可以写出\(n^2\)dp,再用TRIE树优化即可code#include<bits/stdc++.h>usingnamespacestd;#defineN200005#defineintlonglongintn,k1,k2;inta[N],fl[2];constintm......
  • CF1392I Kevin and Grid 题解
    题目传送门\(\large\textbf{Statement.}\)给定两个序列\(a,b\),有一个\(n\timesm\)的网格图,每个点\((i,j)\)上有个权值\(a_i+b_j\),每个点和其上、下、左、右方相邻的点有连边。多次询问,每次给一个阈值\(x\),将图分为权值\(<x\)(蓝色)和\(\gex\)(红色)的两种连通块。一......
  • P10084 [GDKOI2024 提高组] 计算 题解
    题目传送门前置知识:单位根反演先考虑怎么求\(F(x,a,b)\),易得\(\gcd(x^a-1,x^b-1)=x^{\gcd(a,b)}-1\)。所以\(L=m^{\gcd(a,b)}+1,R=m^{\gcd(c,d)}\),然后发现\([L,R]\)中的数模\(m\)后每种余数出现次数相同,下面记其为\(n=\frac{R-L}{m}\)。考虑用生成函数做,易得答案为......
  • [ABC331G] Collect Them All 题解
    洛谷传送门AT传送门\(\textbf{Statement.}\)有\(M\)种颜色,用\(1\simM\)编号,每次抽奖抽中第\(i\)种颜色的概率为\(\frac{c_i}{N}\),其中\(\sumc_i=N\),求抽中每种颜色至少一次的期望次数。\(1\leM\leN\le2\times10^5\)。\(\textbf{Solution.}\)发现直接求不好......
  • [ARC087F] Squirrel Migration 题解
    洛谷题面AT题面如果两条路径不存在交点,则两条路径各选一个端点交换后两路径相交,答案不会变劣。考虑所有路径两两相交的情况,因为图是一棵树,所以这些路径会交于一点。以这个点为根,那么最大的子树大小一定不超过\(\fracn2\),所以这个点是树的重心,每条路径的端点一定在两个不......
  • 个人题解:2024 年湖北省省队选拔集训暨能力测试 第一试
    时与风对每条边进行BFS。二维偏序部分用vector存一下就行了。花神诞日引理:对于\(a<b<c\),\(\min(a\text{XOR}b,b\text{XOR}c)\leqa\text{XOR}c\)。证明:考虑比较\(a,c\)二进制下第一位不同,也就是\(a=(X0\dots)_{(2)},c=(X1\dots)_{2}\)。因为\(b\in(a,c)\)所以......
  • CSP-S 2023 题解
    T1一开始所有密码都没被标记。对于每个输入的状态枚举一遍所有没标记的密码,判断是否可能是正确密码,如果不行就标记一下。最后输出没被标记的密码个数。总共只有\(10^5\)个密码,可以轻松通过。难度:橙。T2见CF1223FStackExterminableArrays题解。难度:蓝。T3大模拟,直......
  • 2024牛客寒假算法基础集训营5 题解 ( A,C,G,H,I,L,M )
    2024牛客寒假算法基础集训营5题解(A,C,G,H,I,L,M)A mutsumi的质数合数题意有一个由\(n\)个正整数组成的数组,她想知道数组中质数和合数共有几个。思路由质数和合数的定义可知,正整数范围内除\(1\)外,要么是质数要么是合数,本题直接统计不是\(1\)的正整数的个数即可代码......
  • 题解 CF963E Circles of Waiting
    令\(f_{i,j}\)表示\((i,j)\)走出以\((0,0)\)为圆心,半径为\(R\)的期望步数,显然所有在圆外的点\((i,j)\)满足\(f_{i,j}=0\)。有\(f_{i,j}=p_1f_{i-1,j}+p_2f_{i,j-1}+p_3f_{i+1,j}+p_4f_{i,j+1}\)。这东西很套路,高斯消元就行,但状态数是\(O(R^2)\)的,复杂度\(O(R^......