CF1437F Emotional Fishermen

考虑 “高兴” 的点所形成的子序列(显然这是单增的)并插入其他的点(决策集合也只会扩大)。先将原序列升序排序。

直接 DP 这个序列, (f(pos, cnt)) 为当前最大值位置 (pos),已经决策的点数 (cnt le last_i + 1)(last_i = max{j : 2a_j le a_i}),插入一个点,有两种转移:

  • (f(pos, cnt) leftarrow sum_{pos' le last_i} f(pos', cnt - 1))
  • (f(pos, cnt) leftarrow f(pos, cnt - 1))

考虑省去第二维,每次插入一个 ”高兴“ 的点后直接将可以插入的 ”不高兴“ 点全部插入到剩余的空位中。

则有

[f_i = sum_{j = 1}^{last_i} f_j cdot (n - last_j - 2)^{underline{last_i - last_j - 1}} ]

注意到 (j in [last_j, last_i])

容易前缀和优化。注意特判无解(即点没有被插入完)的情况。

复杂度 (mathcal O(n log n))

原文地址:https://www.cnblogs.com/RiverHamster/p/sol-cf1437f.html