一些东西 题解
A
设 \(f_i\) 表示以最高位为 \(i\) 的数结尾的数列个数,有 \(f_i=(2^{2^i}-1)\left(1+\sum\limits_{j=0}^{i-1}f_j\left(1-\dfrac 1{2^{2^j}+1}\right)\right)\)。
证明:考虑最高位为 \(j\) 的数 \(u\) 接上最高位为 \(i\) 的数 \(y,x(y<x)\) 时,不合法当且仅当 \(x\) 的 \(j\) 位为 \(1\) 且 \(y=x\oplus u\),
假设任选 \(x\) 及后面最高位为 \(i\) 的数,\(x\) 的 \(j\) 位为 \(1\) 的方案数为 \(2^k\),则 \(x\) 的 \(j\) 位任意的总方案数为 \(2^k+2^{k+2^j}\),
则 \(x\) 的 \(j\) 位为 \(1\) 导致不合法的概率为 \(\dfrac{2^k}{2^k+2^{k+2^j}}=\dfrac 1{2^{2^j}+1}\)。
B
设 \(f_{i,0/1}\) 表示 \(i\) 子树 DFS 序奇 / 偶位置和的最大值,
首先如果 \(i\) 所有孩子的子树大小都是偶数,那访问这些孩子的顺序就无所谓了,
否则考虑以 \(i\) 的至少一个大小为奇数的孩子为分界,
对所有大小为偶数的孩子 \(v\),把 \(f_{v,0}\) 更大的 \(v\)、\(f_{v,1}\) 更大的 \(v\) 分别放在其两侧,
这样就可以对所有 \(v\) 取到 \(\max(f_{v,0},f_{v,1})\) 的贡献。
然后考虑剩下 \(c\) 个大小为奇数的孩子 \(v\),可以发现一半 \(v\) 取到 \(f_{v,0}\),一半 \(v\) 取到 \(f_{v,1}\),贪心即可。
C
对每个 \(1\) 的位置 \(i\),考虑 \(\text{LCP}(x,n)=i-1\) 的 \(x\) 的贡献,
即考虑 \([1,i-1]\) 位与 \(n\) 相同,\(i\) 位填 \(0\),后面 \(n-i\) 位任意填的数的贡献。
设 \(k=n-i\),前 \(i-1\) 位中有 \(c\) 个 \(1\),则这些数的贡献为:
Sol 1
设 \(x_1=\dfrac{1+\sqrt 5}2\),\(x_2=\dfrac{1-\sqrt 5}2\),则:
预处理需要预处理的东西即可。
\(5\) 好像不是二次剩余,直接扩域。
Sol 2
设 \(F=\begin{bmatrix}0&1\end{bmatrix}\),\(B=\begin{bmatrix}1&1\\1&0\end{bmatrix}\),\(I\) 为单位矩阵,则
显然 \(B\) 和 \(I\) 有交换律,那么
预处理需要预处理的东西即可。
D
枚举点 \(1\) 与谁在同一条直线上,可以得到这些平行线的斜率 \(\dfrac{\Delta y}{\Delta x}\),
类似 P5102 [JOI 2016 Final] 领地 地,一条直线可以唯一表示为 \((x,y)|0\le x<\Delta x\),
表示对于所有 \(t\),\((x+t\Delta x,y+t\Delta y)\) 在这条直线上。
对于每个点找出其在哪条直线上,如果找到恰好 \(k\) 条直线,输出答案即可。
E
首先把 \(a_i,b_i\) 都减去 \(i\),此时 \(i,j\) 连通当且仅当 \(a_i\le a_j,b_i\ge b_j\),称此时 \(j\) 覆盖 \(i\)。
把所有点按 \(a_i\) 排序,首先只有 \(b_i\) 的后缀最小值位置可能产生贡献(因为其不被其他点覆盖),
设 \(c_i\) 表示点 \(i\) 覆盖的所有点 \(j\) 的 \(b_j\) 的最大值,
则后缀最小值位置 \(i\) 产生贡献,当且仅当 \(c_j<b_i\),其中 \(j\) 是上一个后缀最小值位置。
F
对每个人 \(u\) 考虑其能否成为答案。
跟 \(u\) 相关的比赛,显然让 \(u\) 拿全部分即可。
剩下的人的分数肯定是最大值越小越好,所以平均分配即可。
拿个 multiset
维护这玩意。
G
对 \(x\) 这一维扫描线,拿个 multiset
维护此时所有平台的高度,
扫到当前波特的坐标时,根据题意更新波特的坐标即可。
H
TBA
I
这都不会做你退役吧
J
称到其它点的距离乘以权值之和的最小的点为“重心”。
随着时间推移,实际“重心”肯定逐渐向以 \(a_i\) 为点权的“重心” \(u\) 移动,而每次修改后 \(u\) 最多只移动一步,
所以维护出这个 \(u\),操作时将之前的实际“重心”向 \(u\) 移动直到继续移动答案变劣为止即可。
K
TBA
L
直接做