|
@@ -0,0 +1,84 @@
|
|
|
|
++++
|
|
|
|
+date = "2021-07-26T21:22:00+08:00"
|
|
|
|
+draft = false
|
|
|
|
+tags = []
|
|
|
|
+title = "2021 牛客多校第 4 场"
|
|
|
|
+authors = ["xry111"]
|
|
|
|
++++
|
|
|
|
+
|
|
|
|
+# I. Inverse Pair
|
|
|
|
+
|
|
|
|
+## 题意
|
|
|
|
+
|
|
|
|
+输入一个数组,保证里面是一个排列,选择一些数组元素给他加 $1$,
|
|
|
|
+最小化操作后的逆序对数。
|
|
|
|
+
|
|
|
|
+## 做法
|
|
|
|
+
|
|
|
|
+因为是一个排列,而且只能加 $1$,增加某个数组元素时,
|
|
|
|
+一定不会与它后面的元素形成新的逆序对,
|
|
|
|
+只考虑与它前面元素比较时会减少逆序对就行了。
|
|
|
|
+
|
|
|
|
+如果 $a\_j = a\_i + 1$ 且 $j < i$,那么我们给 $a\_i$ 加 $1$
|
|
|
|
+就能减少一对逆序对,但是如果同时也给 $a\_j$ 加 $1$ 就减小不了。
|
|
|
|
+随便画一下会发现所有数可以连成一个二分图,
|
|
|
|
+可以将每个联通分量中 (除了没连边的) 所有黑点或者白点加 $1$,
|
|
|
|
+即可减少相应数目的逆序对。求一下原来的逆序对数然后搞一下就行了。
|
|
|
|
+
|
|
|
|
+# G. Product
|
|
|
|
+
|
|
|
|
+## 题意
|
|
|
|
+
|
|
|
|
+给定 $n, k, D$,求
|
|
|
|
+
|
|
|
|
+$$\\sum_{a\_1 + a\_2 + \\cdots a\_n = D, a\_i \geq 0}
|
|
|
|
+\\frac{D!}{\\prod (a\_i + k)!}$$
|
|
|
|
+
|
|
|
|
+## 做法
|
|
|
|
+
|
|
|
|
+这个式子就是
|
|
|
|
+
|
|
|
|
+$$\\sum\_{a\_1 + a\_2 + \\cdots a\_n = D} \\frac{D!}{\\prod a\_i !} =
|
|
|
|
+\\sum\_{\\{a\_i\\}} \\binom{D}{a\_1, \cdots, a\_n}$$
|
|
|
|
+
|
|
|
|
+改了一下,而这个改之前的式子众所周知就是 $n^D$。
|
|
|
|
+我们考虑怎么才能凑成这种样子。令 $b\_i = a\_i + k$,就成了
|
|
|
|
+
|
|
|
|
+$$\\frac{D!}{(D+nk)!}
|
|
|
|
+\\sum_{b\_1 + \\cdots b\_n = D + nk, b\_i \geq k}
|
|
|
|
+\\binom{D+nk}{b\_1, \cdots, b\_n}$$
|
|
|
|
+
|
|
|
|
+前面那个东西可以最后再算,
|
|
|
|
+后面和式如果没有那个<del>讨厌的</del> $b\_i \geq k$ 就是 $n^{D+nk}$,
|
|
|
|
+但是有这个条件以后就得把不满足它的容斥掉。
|
|
|
|
+设有 $m$ 个不满足条件的 $b\_i$,它们的和是 $\\Delta$,对应的容斥项是
|
|
|
|
+
|
|
|
|
+$$(-1)^m \\binom{n}{m}
|
|
|
|
+\\sum_{b\_1 + \cdots + b\_{n - m} = D + nk - \\Delta,
|
|
|
|
+\\Delta = \\sum\_{j=1}^m c\_j}
|
|
|
|
+\\binom{D + nk}{b\_1, \cdots, b\_{n - m}, c\_1, \cdots, c\_m}$$
|
|
|
|
+
|
|
|
|
+把 $b$ 和 $c$ 先分开,变成
|
|
|
|
+
|
|
|
|
+$$\\sum\_\\Delta \\binom{D + nk}{\\Delta}
|
|
|
|
+\\sum_{c\_i < k} \\binom{\Delta}{c\_1, \cdots, c\_m}
|
|
|
|
+\\sum_{\\{b\_i\\}} \\binom{D + nk - \\Delta}{b\_1, \cdots, b\_{n - m}}$$
|
|
|
|
+
|
|
|
|
+其中第一项就是个二项式系数 (但是由于出题人故意毒瘤人,不能预处理阶乘,
|
|
|
|
+需要一边求和一边递推);第三项就是 $(n - m)^{D + nk - \\Delta}$;
|
|
|
|
+至于第二项就是将 $\\Delta$ 拆分成小于 $k$ 的 $m$
|
|
|
|
+个未必递增的非负整数之和的方案数 $f(m, \\Delta)$,这个东西可以递推:
|
|
|
|
+
|
|
|
|
+$$f(i, j) = \\sum_{x < k} \\binom{j}{x} f(i - 1, j - x)$$
|
|
|
|
+
|
|
|
|
+然后就完了,答案是
|
|
|
|
+
|
|
|
|
+$$\\frac{D!}{(D+nk)!} \\sum_{m=0}^{n - 1}
|
|
|
|
+(-1)^m \\binom{n}{m}
|
|
|
|
+\\sum\_\\Delta \\binom{D + nk}{\\Delta} f(m, \\Delta)
|
|
|
|
+(n - m)^{D + nk - \\Delta}$$
|
|
|
|
+
|
|
|
|
+全场签完到就自闭这题,最后一分钟才过,剩下啥都没干。教训:
|
|
|
|
+* 推公式不能凭感觉,要用比较严格的数学符号,不然能写出差了 $114514$
|
|
|
|
+ 项的公式。
|
|
|
|
+* 公式不对千万不要拿着暴力结果去猜,不然能猜出 $1919810$ 个错误公式。
|