Loading

不是 DE_aemmprty 的草稿纸

关于难度

  • \(\textbf{Easy}\):我是 zak,我一眼秒了,我觉得这题没啥技巧啊!
  • \(\textbf{Medium}\):完全自己想出,但想了较长时间。
  • \(\textbf{Hard}\):不完全是自己想出。

\([0, 1]\) 表示在同档题中的难度。

qoj12212 \(\textbf{[*Medium 0.1]}\)

二分答案。考虑确定 \(\max = t\) 之后如何判定。因为容易发现将序列循环位移不影响答案,所以不妨设 \(a_1 = \min\limits _{i = 1} ^ n a_i\)。为了处理方便,可以令 \(a_{n + 1} = a_1\),并将 \(k\) 增加 \(1\),显然任意选取 \(\ge 2\) 个数的方式都可以选上 \(a_1\)\(a_{n + 1}\),故不妨这两个数始终被选中。首先套路地将 \(\le \dfrac{x}{2}\) 的称为"小数",\(> \dfrac{x}{2}\) 的称为"大数",则显然选出的数中小数相邻无限制,大数不能相邻。

先证明存在一种选取最多数的方法使得所有小数都被选取。这是因为若小数 \(x\) 未选中,设 \(x\) 两侧最近的被选中的小数为 \(l, r\),去掉 \(l, r\) 之间选取的至多一个大数,再选上 \(x\),选中的数的个数不减。

故不妨所有小数都选,此时对两个相邻的小数 \(a_l, a_r\),它们中间至多选出一个大数。我们只需判断 \(\min\limits_{i = l + 1} ^ {r - 1}a_i\)\(t - \min\{a_l, a_r\}\) 的大小关系即可。用 ST 表即可做到 \(\mathcal{O}(n (\log n + \log V))\)

posted @ 2025-11-14 21:56  DE_aemmprty  阅读(23)  评论(0)    收藏  举报