CSP-S2考前综合强化刷题 Day7

最后一天了。

water

在这里插入图片描述
唯一的签到题,直接按出现次数从小到大排序一下贪心求就行了。

circle

一个数想要成为逆序对,它等后面的数选了它不选,那么对于后面的一个数情况可能是我不选,它选了,或是我不选,它不选,我不选,它选,这样无限循环下去,那么第 n n n 次循环其实有 2 n − 1 2n-1 2n1 不选的概率。那么可以看成一个首项为 p ( 1 − p ) p(1-p) p(1p) 公比是 ( 1 − p ) 2 (1-p)^2 (1p)2 的等比数列,这个东西有无限项,但它的公比小于 1 1 1 是可以收敛的。假设你的首项为 a a a 公比为 q q q 那么在 q < 1 q<1 q<1 的情况下,无限项的求和公式为

S = 1 1 − q S = \frac{1}{1-q} S=1q1

那么这个可以逆元套上去,那么考虑一个数 i i i 后面是有 n − i n - i ni 个数的,那么每个数都可以和它构成逆序对,那么这个数组成逆序对的期望是 ( n − i ) × S (n-i) \times S (ni)×S,那么你再加法原理加起来,不能暴力加,这其实是 ( n − 1 ) ( n − 1 + 1 ) 2 \frac{(n-1)(n-1+1)}{2} 2(n1)(n1+1) 的,乘上去摸一下然后开个 ull 就可以了。

int a1 = (y - x) * ksm(y, p - 2, p) % p * x % p * ksm(y, p - 2, p) % p;
int q = (y - x) * ksm(y, p - 2, p) % p * (y - x) % p * ksm(y, p - 2, p) % p;
int ans = ((n - 1) * n % p - n * (n - 1) % p * ksm(2, p - 2, p) % p + p) % p * a1 % p * ksm(1 - q + p, p - 2, p) % p;

path


第二难的套路题吧。这个 k k k 比较小,还是 DAG,直接想到下降幂 dp。

x n = ∑ k = 0 n { n k } × ( x k ) × P k x^{n}=\sum_{k=0}^{n} \begin{Bmatrix}n\\k\end{Bmatrix} \times {{x \choose k} \times P_k} xn=k=0n{nk}×(kx)×Pk

那就老套路了,斯特林数和排列单独拿出来处理,余下的式子考虑它的组合意义,就是从路径上的点选出一些点的方案数,那么直接 DAG dp。转移你就考虑当前这个点选还是不选复杂度 O ( n k ) O(nk) O(nk)

point


什么西伯利亚啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值