…… V 2026.5.24 (-5)
不想写题解了。没有有意思的密码。
就当我没睡醒罢了。不太对劲吧。
还是大吉。天呢。睡着了。
\(\text{(I)}\) [CodeForces 1352 F] Binary String Reconstruction
已知三个非负整数 \(n_0, n_1, n_2\),表示某个二进制字符串 \(s\) 中所有相邻字符对、中,含有 \(0\) 个 '1' 的对数为 \(n_0\),含有 \(1\) 个 '1' 的对数为 \(n_1\),含有 \(2\) 个 '1' 的对数为 \(n_2\)。请构造任意一个满足条件的二进制字符串 \(s\)。保证存在解且至少一个 \(n_i > 0\)。\(t\) 组测试数据。
数据范围:\(1 \le t \le 1000\),\(0 \le n_0, n_1, n_2 \le 100\),\(n_0+n_1+n_2 > 0\)。
\(n_1\) 相较于 \(n_0\) 和 \(n_2\) 是最特殊的,因为两边哪个是 \(1\) 哪个是 \(0\) 并不确定。
分类讨论,若 \(n_1 = 0\),则要么 \(n_0\) 为 \(0\) 要么 \(n_2\) 为 \(0\),输出全 \(0\) 或全 \(1\)。
否则,构造 \(n_0 + 1\) 个 \(0\) 保证达到 \(n_0\),构造 \(n_2 + 1\) 个 \(1\) 保证达到 \(n_1\),此时还差 \(n_1 - 1\) 个 \(1\),输出 \(01010101\cdots\) 的前缀即可。
\(\text{(II)}\) [CodeForces 1392 D] Omkar and Bed Wars
已知 \(n\) 个玩家围成一圈,每个玩家攻击左边或右边。定义“逻辑行为”:若一个玩家被恰好 \(1\) 个其他玩家攻击,则他必须攻击那个攻击者;若被 \(0\) 或 \(2\) 个攻击,则可任意攻击。给定初始攻击方向字符串 \(s\),可以改变任意玩家的攻击方向。求最少改变次数,使得所有玩家均符合逻辑行为。\(t\) 组测试数据。
数据范围:\(1 \le t \le 10^4\),\(3 \le n \le 2 \times 10^5\),\(\sum n \le 2 \times 10^5\)。
不难发现一个合法的环能且仅能由四种子串拼成:RL RRL RLL RRLL。
设 diff 函数表示两段的差异,旋转字符串 \(4\) 次分别动态规划计算。
转移式还需要给么。
\(\text{(III)}\) [CodeForces 1336 B] Xenia and Colorful Gems
已知三组数:红色宝石重量 \(r_1, \dots, r_{n_r}\),绿色宝石重量 \(g_1, \dots, g_{n_g}\),蓝色宝石重量 \(b_1, \dots, b_{n_b}\)。从每组中各选一个重量 \(x, y, z\),求 \((x-y)^2 + (y-z)^2 + (z-x)^2\) 的最小值。\(t\) 组测试数据。
数据范围:\(1 \le t \le 100\),\(1 \le n_r, n_g, n_b \le 10^5\),\(\sum n_r, \sum n_g, \sum n_b \le 10^5\),\(1 \le r_i, g_i, b_i \le 10^9\)。
请自证:\(x, y, z\) 越接近,\((x-y)^2 + (y-z)^2 + (z-x)^2\) 越小。
设 \(a < b < c\) 分别为 \(x, y, z\) 中的一个。则考虑枚举 \(b\),双指针找到 \(a, c\) 可选中最接近 \(b\) 的一个,计算答案即可。
注意 \(x, y, z\) 的大小关系可能有 \(6\) 种。
\(\text{(IV)}\) [CodeForces 1355 C] Count Triangles
已知整数 \(A, B, C, D\),满足 \(A \le B \le C \le D\)。求三元组 \((x, y, z)\) 的个数,其中 \(x, y, z\) 为整数,满足 \(A \le x \le B \le y \le C \le z \le D\),且 \(x, y, z\) 能构成非退化三角形。
数据范围:\(1 \le A \le B \le C \le D \le 5 \times 10^5\)。
\(0\)
令 \(x + y = S\),则 \(S \in [A + B, B + C]\),对于 \(S\):
- 统计满足 \(x + y = S\) 且 \(x \in [A, B], y \in [B, C]\) 的 \((x, y)\) 的对数。
- 统计满足 \(z \in [C, D]\) 且 \(z < S\) 的 \(z\) 的个数。
\(1\)
由 \(x + y = S\) 得 \(y = S - x\),则 \(x \in [A, B], y \in [C, D] \Rightarrow S - x \in [C, D]\)。
解得 \(x \in [\max\{A, S - C\}, \min\{B, S - B\}] = [L, R]\)。则 \(L \le R\) 时,\(x\) 的个数为 \(R - L + 1\)。
线性规划
将 \((x, y)\) 视为平面直角坐标系中的一个点,可行域是 \([A, B] \times [B, C] \cap \{(x, y) | x + y = S\}\)。
令空集也是一条线段,则可行域是一条线段。
当 \(S\) 从最小值增长到最大值时,交集先变大后变小。因此 \(f(S)\) 是一个分段线性函数。
令 \(x' = x - A \in [0, B - A], y' = y - B \in [0, C - B]\),且 \(x' + y' = S - A - B = t \in [0, (B + C) - (A + B) = C - A]\)。
转化为在矩形 \([0, X_{\max} = B - A] \times [0, Y_{\max} = C - B]\) 中求 \(x' + y' = t\) 的整数点个数。
解为
有 \(X_{\max} + Y_{\max} = C - A\)。则:
其中 \(S - A - B\) 是 \(S\) 超过 \(A + B\)(最小和)的部分,\(B + C - S\) 是 \(S\) 少于 \(B + C\)(最大和)的部分,剩下两个分别为 \(x, y\) 区间长度。
\(2\)
\(z \in [C, D]\) 且 \(z < S\) \(\Rightarrow z \in [C, \min\{D, S - 1\}]\)。
\(0\)
直接求解即可。解法也许不够优秀,而且很麻烦。
\(\text{(V)}\) [CodeForces 1994 E] Wooden Game
已知 \(k\) 棵有根树。操作:选择任意一棵树中的任意一个子树,将其移除。重复操作直至所有树被移除。每次操作移除的子树的顶点数称为该操作的大小,求所有操作大小按位或的最大可能值。\(t\) 组测试数据。
数据范围:\(1 \le t \le 10^4\),\(\sum k \le 10^6\),\(\sum n \le 10^6\)。
考虑每一颗树的贡献可以任选 \([1, Z]\) 的任意一个数(可以拆下若干大小为 \(1\) 的子树),则贪心的选择当前或值最大的一个即可。
所以根节点相当于读了一堆垃圾。
\(\text{(VI)}\) [CodeForces 1884 D] Counting Rhyme
给定长度为 \(n\) 的整数序列 \(a_1, a_2, \dots, a_n\)。称一对下标 \((i, j)\)(\(1 \le i < j \le n\))是“好的”,如果不存在下标 \(k\)(\(1 \le k \le n\))使得 \(a_k\) 同时整除 \(a_i\) 和 \(a_j\)。求每组数据中好对的数目。\(t\) 组测试数据。
数据范围:\(1 \le t \le 2 \times 10^4\),\(1 \le n \le 10^6\),\(\sum n \le 10^6\),\(1 \le a_i \le n\)。
\(\text{(VII)}\) [CodeForces 1407 D] Discrete Centrifugal Jumps
已知 \(n\) 个摩天大楼的高度 \(h_1, h_2, \dots, h_n\)。定义从 \(i\) 到 \(j\)(\(i < j\))的“离散跳跃”为:要么 \(j = i+1\),要么区间 \((i, j)\) 内的所有高度都严格小于 \(\min(h_i, h_j)\),要么都严格大于 \(\max(h_i, h_j)\)。求从 \(1\) 号大楼到 \(n\) 号大楼所需的最少离散跳跃次数。
数据范围:\(2 \le n \le 3 \times 10^5\),\(1 \le h_i \le 10^9\)。
\(\text{(VIII)}\) [Atcoder Regular Contest 219E] Equal Distribution
已知 \(2H\) 行 \(2W\) 列的网格,每个格子为
o(有草莓)或x(无草莓),草莓总数为 \(2HW\) 个。要求将网格划分为两个连通区域 \(A\) 和 \(B\)(每个格子属于恰好一个区域),使得每个区域包含 \(2HW\) 个格子,且每个区域包含 \(HW\) 个草莓。输出任意一种可行划分(用字符A和B表示每个格子所属区域)。
数据范围:\(1 \le T\),\(1 \le H \le W\),\(H \times W \le 10^6\),所有测试用例的 \(H \times W\) 之和 \(\le 10^6\),草莓总数为 \(2HW\)。
\(\text{(IX)}\) [CodeForces 1592 D] Hemose in ICPC ?
已知一棵 \(n\) 个结点的树,边权未知(但 \(\le 10^9\))。定义 \(Dist(u, v)\)(\(u \ne v\))为 \(u\) 到 \(v\) 路径上所有边权值的最大公约数(gcd)。可以询问一个结点集合 \(S\)(\(|S| \ge 2\)),得到 \(\max_{u,v \in S, u \ne v} Dist(u, v)\)。最多询问 \(12\) 次。需要找出任意两个不同结点 \(a, b\),使得 \(Dist(a, b)\) 为所有结点对中的最大值。
数据范围:\(2 \le n \le 10^3\),交互。
\(\text{(X)}\) [USACO 21 OPEN Platinum] United Cows of Farmer John
已知长度为 \(N\) 的序列 \(b_1, b_2, \dots, b_N\)(\(1 \le b_i \le N\))。称一个区间 \([l, r]\)(\(1 \le l < r \le N\) 且 \(r-l \ge 2\))为“代表队”,并在其中选择三个位置作为领队,要求 \(l\) 和 \(r\) 必须是领队,且所有领队的品种(即 \(b\) 值)互不相同(与区间内其他非领队成员的品种无关)。求不同的代表队数量(区间不同或领队选择不同即视为不同)。
数据范围:\(1 \le N \le 2 \times 10^5\)。

浙公网安备 33010602011771号