封面来源
Pixiv ❄❄❄-95028648
20210913测试
[toc]
1.排列
题目链接: 原题P4678
题目描述
定义两个数组 A, B 相似,当且仅当满足以下条件:
- A, B 的长度相等,设其为 $n$。
- 对于所有 $i(1 ≤ i ≤ n)$,A 中小于 $A[i]$ 的元素个数等于 B 中小于 $B[i]$ 的元素个数。 对于两个排列 P1, P2,定义 F(P1, P2) 等于满足$ P1[l · · · r] $相似于 P2$[l · · · r](1 ≤ l ≤ r ≤ n)$, 并且 $P1[l · · · r]$ 中逆序对数量小于 E 的$ (l, r)$ 的合法对数 (即合法子区间数,$Pi [l · · · r]$ 表示由$ Pi [l], Pi [l + 1], · · · , Pi$ [r] 组成的数组。)
对$ P1, P2$ 取遍所有$ n$ 个元素的排列,求$ F(P1, P2)$ 的总和。
题意
求(任意两个长度为$N$的全排列的贡献)之和,而两个数列中位置相等的两段区间,且满足各区间内数字大小关系相等,逆 序对个数不大于$E$的区间贡献为$1$。
分析
设$f_{i,j}$表示长度为$i$,逆序对个数为$j$的方案数。于是可打表,得到如下的表格
$$ \begin{matrix} 1_{i=1,k=0}\1_{i=2,k=0}&1\1_{i=3,k=0}&2&2&1\1_{i=4,k=0}&3&5&6&5&3&1\1_{i=5,k=0}&4&9&15&20&22&20&15&9&4&1_{k=10} \end{matrix} $$
看前几行会觉得可能是$f_{i,j}=f_{i-1,j}+f_{i,j-1}$,但是$20+3 \not=22 $。所以只能DP了。
发现因为新插入的$i$严格大于$1\to i-1$,所以插入$i$带来的新逆序对个数为$0\to i-1$。所以有$f_{i,j}=\sum_{k=j-i+1}^jf_{i-1,k}$。
然后用对每次询问,枚举区间长度,用组合式计算区间放不同数字和区间在不同位置的方案数,输出即可。
最后放一个通式$$ans = \sum_{i=1}^{i \leq n} [ ( C_n^i A_{n-i}^{n-i} )^2 \times cnt_{i,k} C_{n-i+1}^{1} ] = \sum_{i=1}^{i \leq n} [ (\frac{n!}{i!} )^2cnt_{i,k} C_{n-i+1}^{1} ]$$。
代码
|
|
2.六边形
据说是一个状压DP,不会,这里放上标程
|
|