Atcoder ABC397 题解

ABC397

A

直接判温度在哪个区间内即可。

submission.

B

因为 \(s\) 的长度只有 \(100\),所以直接暴力地循环,每轮找到第一个不符合要求的字符,在它前面插入 i 或者 o 即可,显然插入有 \(O(n)\) 轮,故总时间复杂度 \(O(n^2)\)

submission.

C

省流:F 的弱化版。

我们算出一个 \(pre\) 数组和一个 \(suf\) 数组,表示一个前(后)缀的不同数字个数。对于 \(pre\),显然有:

\[pre_i = pre_{i-1} + \left [ a_i 在 1 \sim i-1 中没出现过 \right ] \]

其中中括号运算符表示,若其内命题为真,则值为 \(1\),反之为 \(0\)
\(suf\) 的计算同理。

这个【没出现过】可以用一个桶动态统计。
计算答案,就是枚举分割点,\(\max_{i=1}^{n-1} pre_i+suf_{i+1}\)
时间复杂度 \(O(n)\)

submission.

D

由立方差公式,令 \(t=x-y\),我们有:

\[\begin{aligned} & x^3-y^3 \\ = \ & (x-y)(x^2+xy+y^2) \\ = \ & (x-y)\left [(x-y)^2+2xy+xy \right] \\ = \ & (x-y)\left [(x-y)^2+3xy\right] \\ = \ & t(t^2+3xy) \\ \ge \ & t^3 \end{aligned} \]

我们可以枚举 \(t\),由上式,\(t \le \sqrt[3]{n}\),故 \(t\) 只需要枚举到 \(10^6\)
有了 \(t\),自然可以算出 \(xy = \frac{\frac{n}{t} - t^2}{3}\)。而又有 \(y=x-t\),直接二分 \(x\)(解方程)即可。

时间复杂度 \((V^{\frac{1}{3}} \log V)\),其中 \(V\) 为值域。
submission.

E

我们记 \(f_u\) 为在以 \(u\) 为根的子树的一个合法的剖分中,\(u\) 所在的链的大小。(若这个链包含 \(u\) 的祖先,不计算在内)

我们做树形 DP,\(S\)\(u\) 的所有儿子 \(v\) 中,满足 \(f_v \ne k\)\(v\) 的集合。这些 \(v\) 无法在子树内把链补完整到 \(k\),所以必须向上延伸。
如果 \(|S| \ge 3\),那么这三个儿子都要往上延伸,但是 \(u\) 最多连接两个点。所以无解。
如果 \(|S| = 2\),那么两个儿子都要和 \(u\) 连接。如果 \(f_{v_1}+f_{v_2}+1 = u\),则合法(\(+1\) 代表把 \(u\) 算上),\(f_u \gets k\);否则就无解。
如果 \(|S| = 1\),这个儿子要和 \(u\) 连接。此时 \(u\) 还有一个活头,可能需要继续向上延伸。\(f_u \gets f_v + 1\)
如果 \(|S| = 0\),那么 \(u\) 所在的链目前只有 \(u\) 一个点,\(f_u \gets 1\)

最后保险起见,判一下 \(f_1\) 是否为 \(k\)
时间复杂度 \(O(n)\)

submission.

F

省流:CF833B The Bakery 严格弱化版,就是 \(k=3\)
CF833B The Bakery 题解

submission.

G

不会。

posted @ 2025-03-15 17:33  Water_M  阅读(481)  评论(0)    收藏  举报