// // // // // // // // // // // // // //

10.11 牛客

10.11 牛客


得分情况

30 + 0 + 40 + 0 = 70


题解

T1 最终测试

\(30\ Pts\)

枚举所有可能性 对于每种可能性 对选手排序得到排名


\(60\ Pts\)

\(E_i\) 表示第 \(i\) 为选手的期望排名 \(s_i\) 为第 \(i\) 位选手的得分 有:

\[E_i = 1 + \sum_{j \ne i}P(s_i < s_j)\\ = 1 + \sum_{j \ne i}\frac 1{16}\sum_{0 \leq x1, x2, y1, y2 \leq 1} [x_1a_{i, 1} + x_2a_{i, 2} < y_1a_{j, 1} + y_2a_{j, 2}] \]

复杂度: \(O(n^2)\)


这一部分的代码


\(100\ Pts\)

看上面那个式子 \(j\) 的枚举与 \(x_1, x_2\) 是不影响的 可以交换枚举的顺序

\[E_i = 1 + \frac 1{16} \sum_{0 \leq x_1, x_2 \leq 1}\sum_{j \ne i}\sum_{0 \leq y_1, y_2 \leq 1} [x_1a_{i, 1} + x_2a_{i, 2} < y_1a_{j, 1} + y_2a_{j, 2}] \]

考虑里面的两个求和 当 \(x_1a_{i, 1} + x_2a_{i, 2}\) 确定之后就是求比其大的数的个数 将所有数存下来排个序 每次查询的时候二分

复杂度: \(O(n\log n)\)


这一部分的代码


T2 空间跳跃

题解说 \(dfs\) 期望能通过 \(40\%\) 的数据 但是 BS 爆零了


将构造过程反过来 看成从 \(n\)\(1\) 的构造 那么操作 \(2, 3\) 可以看成 \(n = \frac n2\)\(n = \frac n3 + 1\)

题解说根据 \(3n + 1\) 猜想 对于给定的范围 只要 \(n\) 为偶数就让 \(n = \frac n2\) 的话 正整数的 \(n\) 必然能到达 \(1\) 负整数的 \(n\) 必然能落到 \(-1, -5, -17\)

\(n\) 的绝对值足够小之后可以使用操作 \(1\) 将其变为正整数 在使用操作 \(2, 3\)\(n\) 变为 \(1\)

题解说通过验证这样的构造不会超过 \(1500\)


代码


T3 快速访问

题目要求维护一个点集到某个点的距离的平方和

直接差了

\[\sum_{v \in S}dis(u, v)^2 = |S|dep_u + \sum_{v \in S}dep_v^2 + 4\sum_{v \in S}dep_{lca(u, v)} + 2dep_u\sum_{v \in S}dep_v - 4dep_u\sum_{v \in S}dep_{lca(u, v)} - 4\sum_{v \in S}dep_vdep_{lca(u, v)} \]

分别维护后面每一项即可

后面那一坨东西的第一项 第二项 第四项是可以直接维护的 其他项可以通过树剖维护

这里只补一个东西

\[\sum_{i = 1}^k(2i - 1) = 2\sum_{i = 1}^ki - k = 2 \times \frac {(1 + k)k}2 - k = k^2 \]

然后就可以直接做了


代码


T4 门童

咕~

posted @ 2021-10-13 15:12  Blank_space  阅读(49)  评论(0编辑  收藏  举报
// // // // // // //