2021.2.19[2021省赛模拟] 总结
2021.2.19省赛模拟总结
下午做模拟赛,有一种午后休闲养生的奇异体验...
得分:30(100) + 100(70) + 0(0) = 130
\(T1\) 乘法没开 \(long \ long\) 表示很淦。
T1.天外飞仙(god)
可以发现抓拍一个天外飞仙的代价是关于 \(t\) 的一次函数,表达式为
求出表达式后大致有两种做法:
-
- 求出上凸壳,二分求答案
-
- 把直线塞进李超树,直接查询
T2.守望先锋(overwatch)
考虑没有询问,可以设状态 \(f_{u, i, 0/1}\) 表示点 \(u\) 开始向下延伸 \(j\) 个点的能力值之和的 最大 / 次大 值,转移很简单。
那么最后答案为
其中 \(g_{i, j, 0}\) 表示 \(f_{i, j, 0}\) 由点 \(i\) 的哪个儿子转移过来,保证 \(g_{i, j, 0} \neq g_{i, j, 1}\)。
对于修改点 \(u\),发现其影响到的点只有 \(u\) 及 \(u\) 以上的 \(m - 1\) 个祖先,所以我们考虑对于每个点 \(u\),将其儿子分别塞入 \(m\) 个 \(set\) 中(分别对于 \(m\) 个深度),那么每次修改就是 \(O(k^2 \log{n})\) 的,查询的话可以再用一棵线段树存下每个点 \(set\) 中最大值 + 次大值。
总时间复杂度 \(O((q + n) k^2 \log{n})\)。
但是由于保证数据纯随机,所以修改时暴力重新转移 \(m\) 个点也能过。
T3.甲鱼漂泊(jypb)
只会打表找规律。
首先可以知道 \(ans(1, x) = 2^{x - 1}, \ ans(x, 1) = 2^x - 1\)。
然后又可知:
发现此过程类似辗转相除法,所以考虑每次直接模,对于 \((2)\)就是 \(ans(p, q - p) \cdot 2^{p / q}\)。
对于 \((1)\),假设我们在对一个二进制数操作,那么每次操作其实就是在二进制数的末尾加 \(1\),那么最后就是 \(ans(p - q, q) \cdot 2^{q / p} + 2^{q / p} - 1\)。
光速幂预处理 \(2\) 的幂即可。