[NOIP2025 T2] 清仓甩卖 题解
不能说是很牛的题目,但是赛时就是没有任何的思路,不知道如何刻画这个不优解的形态,所以还是要认真做一下。
令 \(w_i=1\) 的为一类物品,\(w_i=2\) 的为二类物品。归根到底我们可以发现,选择不优方案当且仅当:有一个性价比较高的一类物品被选择了,导致后面某个性价比没那么高但是价值更高的二类物品无法选择,并且我们还没有办法在后面继续找一个一类物品来弥补损失。具体的,在按照性价比从高到低排序后,我们会选择到 \(\dots x\dots (y)\dots z\),其中 \(x,z\) 为一类物品,\(y\) 为二类物品,然而这样选不如选择 \(\dots y\dots\),即 \(a_y>a_x+a_z\)。
既然可以刻画出不合法形态,我们直接对这个形态计数。不妨先将 \(a\) 降序排序,枚举 \(x,y\) 的位置分别为 \(i,j\),为了满足 \(y\) 比 \(x\) 性价比低,此时要有 \(a_i<2a_j\)。可以将序列划分成几个部分:

其中 \(p\) 为最靠左的 \(p\) 满足 \(a_p<a_i-a_j\)。可以分成:\([1,i-1]\) 中的物品一定被购买(因为 \(j\) 是第一个被创飞的,之前的钱数一定足够,因此 \([1,i-1]\) 中的物品一定在贪心时被购买 ),\(i\) 作为二类物品,\([i+1,j-1]\) 可以选择一类物品购买,而 \((j,p)\) 必须全是二类物品,否则可以从其中选择一个一类物品和 \(j\) 一起结合,得到的 \(a_j+a_k>a_i\),进而弥补掉 \(i\) 的损失,这是不合法的,因此 \((j,p)\) 一定全是二类物品,而 \(p\) 之后可以随便。
考虑如何计数,可以看做 \([1,i-1]\) 中物品贡献 \(1/2\),\([i+1,j-1]\) 贡献 \(0/1\),\(j\) 贡献 \(1\),使这些的和为 \(m-1\),这个简单做,先将 \([1,i-1]\) 的调到 \(0/1\),再先分配 \(1\) 给 \(j\),变成 \(m-i-1\) 分配给 \(j-2\) 个数,方案数就是 \(\binom{j-2}{m-i-1}\)。而对于 \([p,n]\),直接 \(2^{n-p+1}\)。综上,我们得到这一组非法结构的贡献为 \(\binom{j-2}{m-i-1}2^{n-p+1}\)。
求和后用 \(2^n\) 容斥掉就是合法方案了。时间复杂度 \(O(n^2)\)。

浙公网安备 33010602011771号