题解:P14636 [NOIP2025] 清仓甩卖 / sale
特判
对
- 所有
w_k=1 的糖果k 都满足2a_k>a_i ,他们都被选中。所有选中的糖果(包括w 值为2 )的w 之和恰为m-1 。 - 存在两个被选中的糖果
l,o 使得w_l=w_o=1 ,l<o ,2a_l>a_i ,2a_o\le a_i 且所有k>o,w_k=1 的糖果k 都没被选中,所有k\le l,w_k=1 的糖果k 都被选中。所有选中的糖果(包括w 值为2 )的w 之和恰为m 。
对于第一种情况,枚举
-
- 对于所有
k>j ,w_k=2 。
此时,这个方案能产生贡献当且仅当
-
我们要在前
\max(i,j) 个位置中去除掉i,j 这两个已经知道w 值的位置,剩下的\max(i,j)-2 个位置中填入合适数量的1 和2 ,使得下列两个值:- 满足
l<i,w_l=2 的l 的数量乘2 ; - 满足
l<j,w_l=1 的l 的数量。
加起来正好等于
m-2 (这里为什么不是m-1 是因为j 也会被选中,要去掉它)。同时,我们还要求对于j<l<i ,w_l=2 。若j>i 则无限制。这样的方案数记作
d_{i,j} ,具体求法见下文。 - 满足
- 剩下的位置填
2 ,方案数为1 。
对于第二种情况,枚举
-
- 对于所有
l<k<o ,w_k=2 。
此时,这个方案能产生贡献当且仅当
- 我们要在前
\max(i,l) 个位置中去除掉i,l 这两个已经知道w 值的位置,剩下的\max(i,l)-2 个位置中填入合适数量的1 和2 。。。等等?这和第一种情况里的如出一辙,那我们就知道这个值为d_{i,l} 。 - 我们要在后
o-1 个位置中任意选,所以这个方案数是2^{n-o} ; - 我们要在
\max(i,l)<k<o 的k 中填2 ,o 中填1 。方案数为1 。
现在,如果我们知道怎么求
我们发现,第二种情况的
问题变为了求
- 对于
i>j ,注意到此时1\sim i 中w 值为1 的位置数是固定的,d_{i,j} 就是一个组合数; -
对于
i<j ,我们发现下面两个值的和:- 满足
l<i,w_l=2 的l 的数量; - 满足
i<l<j,w_l=1 的l 的数量。
是定值,此时
d_{i,j} 也是一个组合数。 - 满足
至此我们完成了本题,时间复杂度