A
每一轮对总分的贡献都是 \(2\),如果 \(p_1 + p_2 + p_3\) 为奇数则无解。
- \(p_1 + p_2 \le p_3\),最多 \(p_1 + p_2\) 轮。
- \(p_1 + p_2 > p_3\),可以 \(1, 2\) 轮流将 \(3\) 耗完,然后互相匹配,最多 \(\dfrac{p_1 + p_2 + p_3}{2}\) 。
B
-
如何判断一个 \(k_0\) 是否符合条件?
处理每一位的前缀和,依次检查每个长度为 \(k_0\) 的子串,\(O(N\log N)\)。
-
如果 \(k_0\) 符合条件,则 \(k_1 = k_0 + 1\) 是否符合条件?
令 \(s_i = a_i \mid a_{i + 1} \mid \cdots\mid a_{i + k_0 - 1}\)。
则 \(s_i' = s_i = a_i \mid a_{i + 1} \mid \cdots\mid a_{i + k_1} = s_i \mid s_{i + 1}\)。
由于 \(\forall i, j, \ s_i = s_j\),所以 \(\forall i, j, \ s_i' = s_j'\)。
答案具有单调性,考虑二分,复杂度 \(O(N\log^2N)\)。
C
长度为 \(n\) 的序列最多 \(n / 2 - 1\) 个局部最大值。
是否能达到这个上界?
钦定 \(n / 2\) 个位置为局部最大值,给这些位置按数值从大到小分配 \(n/2 + 1\cdots n\) ,给其他位置按数值从大到小分配 \(1\cdots n / 2\)。
钦定位置的最小值可能为 \(n + 1\),其他位置的最大值也可能为 \(n + 1\),不好判断。
如果钦定位置一定包含数值 \(n\) 呢?
钦定位置至少为 \(n + 1\),其他位置最大只有 \(n\)。
因此,只要在选定 \(n/2\) 个位置后,按上述策略分配即可。
由于局部最大值两两不相邻,不妨按照 \(n\) 所在位置的奇偶钦定全部奇数位或全部偶数位。
D
- 答案 \(m\) 一定是最大值 \(mx\) 的倍数。
- 最短子段长度不大于 \(n / k\)。
- \(m\) 一定不大于 \(mx\) 的 \(n / k\) 倍。
于是先花 \(n\) 次操作找到最大值 \(mx\)。
再枚举 \(m\) 是 \(mx\) 的几倍,每轮不超过 \(k\) 次,总共不超过 \(n\) 次。
标签:945,最大值,位置,Codeforces,mid,cdots,mx,Div,钦定 From: https://www.cnblogs.com/Luxinze/p/18201631