「考试总结2021-04-04」晓看

A.rng

考场并没有具体想明白这个概率如何计算,然后就挂掉 (60)

([l_1,r_1],[l_2,r_2]) 对应到平面直角坐标系上面,在 (y=x) 上面的面积除掉总面积就是对应概率

那么考虑其可以构成一个梯形或者三角形,那么设

[f(x_1,x_2)=egin{cases} x_1^2 [x_1<x_2]\2x_1x_2-x_2^2 [x_1le x_2]end{cases} ]

那么计算面积就可以直接容斥,也就是 (f(l_1,l_2)-f(l_1,r_2)-f(l_2,r_1)+f(r_1,r_2)/(2len_1len_2))

那么写 (4)(f) 分别表示,每个分大小讨论,开两个 (BIT) 做即可

B.lg

前置知识:(varphi * I=Id)

考虑将把卷积里面的 (varphi(x)) 换成 (varphi(frac{n}x))

也就是有多少个不大于 (n) 的数只是 (x) 的倍数,然后就没了

本题考虑对 (lcm) 中的每个因子进行考虑,枚举每个因子的次数,那么 (gcd) 的限制就是至少有一个是其倍数

可以用任意选减掉没有其倍数再任意选来容斥得到,套用上面的卷积就能把式子变成:

[Ans=prodlimits_{p^ile m} p^{ sumlimits_{x=1}^{m} f(p^i,x) varphi(x)} ]

实现的时候先枚举 (p^{i}),计算指数,乘起来即可

注意指数上取模是 (mod-1)

C.pm

先贪心:如果交换一个连续段使得交换后可以让所有的点放到对应位置,同时交换次数少于 (len) 那么交换

不难发现这样一个段必然是越短越好,每次可以把操作次数减少 (1),也就是每个点选择满足的最右一个

这样一个连续段需要满足值域下标相同,这个可以使用前缀和 ,区间 (max) 解决

另外,还需要满足这个区间里面的逆序对个数的限制,因为值域的条件,那么计算 ([1,l-1]) 里面 ([r+1,n]) 的个数并减掉,加上前缀逆序对的贡献

不难发现这个可以使用主席树实现
动态
考虑这样一个段的逆序对个数必然是不小于 (len-1) 的,严谨证明考虑归纳,因为最后一个点必然贡献答案,否则可以删掉(也就是等于区间最小值),类似得如果不贡献可以删掉一个前缀区间

(用词意会即可,毕竟不是卷面书写)

同时只需要关心最后一个值域下标相同的点,那么可以在 (Theta(nlog n)) 的复杂度内计算这样的点

剩下的考虑 (dp) 即可,转移考虑取上一个或者 把这一段进行交换,记录转移点,最后输出即可

在输出答案的时候可以将每个点不断交换即可,记录每个点的位置,从小到大枚举,复杂度为逆序对个数,不超过 (n)

这题印象深刻,而且理解相对明白了(证了这么多地方)

原文地址:https://www.cnblogs.com/yspm/p/14617738.html