LG14636 [NOIP2025] 清仓甩卖

Problem

LG14636 [NOIP2025] 清仓甩卖

Analysis

首先,题意可以转化为按照性价比降序选的贪心策略是否是最优策略的方案数。

接着,不妨考虑最优解长成什么样,可以想到先将 \(a_i\) 降序排序,然后按照清仓价格 \(1/2\) 分成两组,那么最优解一定是从这两组中分别选择一个前缀。设在 \(2\) 组中选择了前 \(i\) 个,\(1\) 组中选择了前 \(m-2i\) 个,现在来考虑这样选出的前缀是否是最优解。

采用调整法,考虑 \(i-1\)\(i+1\) 的情况:设 \(1\) 组前缀最后一个数为 \([1-]\),倒数第二个数为 \([1--]\),前缀后一个数为 \([1+]\),后两个数为 \([1++]\);第 \(2\) 组前缀最后一个数为 \([2-]\),前缀后一个数为 \([2+]\)

  • \(i-1\)(即用一个 \(2\) 换两个 \(1\)):根据贪心策略,此时一定有 \(\frac{[2-]}{2}>[1+]>[1++]\),此时替换一定不会更优。
  • \(i+1\)(即用两个 \(1\) 换一个 \(2\)):
    • \(m=1\)(即钱有剩余):当 \([2+]>[1-]\) 时,会更优。
    • \(m=0\)(即钱无剩余):当 \([2+]>[1--]+[1-]\) 时,会更优。这种情况发生在 \([1--]>\frac{[2+]}{2}>[1-]\) 但是没钱买 \([2+]\) 但可以买 \([1-]\) 时。

所以,只用两种 \(i+1\) 的情况是不够优秀的。但是我们依然可以枚举 \([2-]\)\([1-]\)\([1-]\)\([1--]\) 就行,复杂度只是 \(O(n^2)\),剩余工作就是组合数统计。

AC Code

posted @ 2026-04-19 10:00  KenopsiaMind  阅读(0)  评论(0)    收藏  举报