[比赛记录]APIO 2010

A. Commando

\(f_i\) 表示恰好以 \(i\) 为一个段结尾,前面的最大战斗力。前缀和数组设为 \(s_i\)。有转移:

\[f_i = \max_{j < i} \{ f_j + \color{red}{{a(s_i - s_j) ^ 2 + b(s_i - s_j) + c}} \} \]

红色这一坨看起来很凸 / 斜率优化。尝试搞搞斜率。

\(j > k\)\(j\) 是决策点,则需要满足:

\[f_j + a(s_i - s_j) ^ 2 + b(s_i - s_j) > f_k + a(s_i - s_k) ^ 2 + b(s_i - s_k) \]

移项整理得到

\[s_i > \dfrac{f_j - f_k + a(s_j - s_k) ^ 2 - b(s_j - s_k)}{2a(s_j - s_k)} \]

于是欣然做单调栈。线性。

B. Patrol

\(k = 1\) 是平凡的。找到直径,连起直径的两端,就可以少走一个环。

\(k = 2\) 是,猜到结论:必然有一条路径是直径。

把直径边权设为 \(-1\),再找一遍直径,就是第二条路径。

posted @ 2024-11-28 20:59  Link-Cut-Y  阅读(3)  评论(0编辑  收藏  举报