A.rng
考场并没有具体想明白这个概率如何计算,然后就挂掉 (60)
将 ([l_1,r_1],[l_2,r_2]) 对应到平面直角坐标系上面,在 (y=x) 上面的面积除掉总面积就是对应概率
那么考虑其可以构成一个梯形或者三角形,那么设
那么计算面积就可以直接容斥,也就是 (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) 的限制就是至少有一个是其倍数
可以用任意选减掉没有其倍数再任意选来容斥得到,套用上面的卷积就能把式子变成:
实现的时候先枚举 (p^{i}),计算指数,乘起来即可
注意指数上取模是 (mod-1)
C.pm
先贪心:如果交换一个连续段使得交换后可以让所有的点放到对应位置,同时交换次数少于 (len) 那么交换
不难发现这样一个段必然是越短越好,每次可以把操作次数减少 (1),也就是每个点选择满足的最右一个
这样一个连续段需要满足值域下标相同,这个可以使用前缀和 ,区间 (max) 解决
另外,还需要满足这个区间里面的逆序对个数的限制,因为值域的条件,那么计算 ([1,l-1]) 里面 ([r+1,n]) 的个数并减掉,加上前缀逆序对的贡献
不难发现这个可以使用主席树实现
动态
考虑这样一个段的逆序对个数必然是不小于 (len-1) 的,严谨证明考虑归纳,因为最后一个点必然贡献答案,否则可以删掉(也就是等于区间最小值),类似得如果不贡献可以删掉一个前缀区间
(用词意会即可,毕竟不是卷面书写)
同时只需要关心最后一个值域下标相同的点,那么可以在 (Theta(nlog n)) 的复杂度内计算这样的点
剩下的考虑 (dp) 即可,转移考虑取上一个或者 把这一段进行交换,记录转移点,最后输出即可
在输出答案的时候可以将每个点不断交换即可,记录每个点的位置,从小到大枚举,复杂度为逆序对个数,不超过 (n)
这题印象深刻,而且理解相对明白了(证了这么多地方)