0%

2021.09.06模拟赛

Per Aspera Ad Astra

2021.09.06模拟赛

A.都市

都市

考虑要升序输出,把升序的答案数组记作 {ai}\{a_i\}

先把所有的数字排个序,前两个数字必然是 a1+a2a_1+a_2a1+a3a_1+a_3

但是第三个数字不一定是 a2+a3a_2+a_3 ,但只要知道了 a2+a3a_2+a_3 是谁就可以直接找出来所以的数字了

所以直接枚举 a2+a3a_2+a_3 是谁就可以递推了,复杂度 O(n3)O(n^3)

code

B. 争辩

争辩

很妙的题目

仔细考虑题目中的限制条件,先考虑 aa 是一个排列的情况,比较明显的能发现逆序对数每次减少 0022

所以当且仅当它的逆序对数是奇数它是不优美的

aa 不是一个排列的话,我们可以用那个重复的元素任意的减少逆序对数(我死在这里

所以只需要算出来 det(A)det(A)perm(A)perm(A) 然后 perm(A)det(A)2\dfrac{\mathrm{perm}(A)-\det(A)}{2} 就是所有不优美的和

perm(A)=p是排列Ai,pi\mathrm{perm}(A) = \sum\limits_{p是排列}\prod A_{i,p_i}

这个东西叫 积和式 无多项式复杂度做法,但是给出的矩阵很特殊,是一个下三角矩阵加上一条对角线

考虑如果是下三角矩阵显然是所有对角线元素的积

但是加上这一条对角线后就需要考虑其他情况

设大小为 nn 的这种矩阵的积和式为 DnD_n

h4F2Ox.png

考虑选了第一行的第一个数,有 Dn=Dn1A1,1D_n = D_{n-1}A_{1,1}

如果选了第二个

h411Rx.png

下一行就要选两个蓝色的位置,第一个是 Dn2A2,1A1,2D_{n-2}A_{2,1}A_{1,2} ,第二个需要继续讨论

所以就可以递推下去

加了一条对角线的 det(A)\det(A) 也可以这么算

code

C.Prime

Prime

区间筛板子

code

D.Hunter

Hunter

因为期望具有线性性,所以考虑每个人在 11 之前死的概率求和 +1+1 即可

答案为 wiw1+wi\sum\dfrac{w_i}{w_1+w_i}

部分分极具误导性

code