专栏文章

题解:P14636 [NOIP2025] 清仓甩卖 / sale

P14636题解参与者 3已保存评论 3

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
3 条
当前快照
1 份
快照标识符
@min09xqi
此快照首次捕获于
2025/12/01 18:27
3 个月前
此快照最后确认于
2025/12/01 18:27
3 个月前
查看原文
退役喽!考场上被控三小时才做出来,但是思维并不难,至少我的做法是蓝题水平。
特殊性质非常良心啊,从特殊性质开始想。先按照原价从小到大排序。考虑 m=2m=2 的情况,如果是个非法状态,那么必然是有一个代价为 11 的在第一位,一个代价为 22 的在第二位,且在第二位往后还有一个代价为 11 的。我们计这三个原价分别为 x,y,zx,y,z,那么非法状态条件即为 x+y<zx+y<z,因为此时由于考虑到 yy 的时候钱只剩 11 了,将会购买 x+zx+z
还注意到这个代价为 22 的肯定是原价最大的,枚举第一个代价为 11 的,利用二分或双指针找到下一个代价为 11 的可能的范围便可轻松计算,这个范围的左端点肯定是 11,右端点记为 pospos,答案为 2pos2^{pos}。最后将所有状态减去非法状态即可。
考虑正解,枚举上式的 yyxx 的位置,分别计为 i,ji,j,那么参考下图(虽然很丑):
横线上方是下标,下方是值的位置。
还是计算非法状态,显然我们 jj 的取值是粉色这一段,即 ai2<aj<ai\frac{a_i}{2}< a_j < a_i,显然红色这一段最后会在 ii 的前面被购买,绿色这一段如果价格取 11 的话也会在 ii 前面被购买,最后一个 11 的位置会在蓝色这一段,这一段中随便取,与特殊性质相同。考虑 ii 前面的取值方案。
由于 jj 这个点我们一定要取到 11,考虑到 ii 的时候需要剩下 11 元钱,那么绿色+红色这一段的需要消耗的钱数为 m2m-2
红色这一段每个数要么是 11 要么是 22,绿色这一段要么是 00 要么是 11。朴素想法是枚举每一段用了多少,但是这样时间会爆,其实本质上这两段没有很大的区别,我们将红色的这一段全都提出来一个 11,这样红色绿色两段我们就能合并为一段,再用组合数计算即可得到前面的方案数,和后面的蓝色方案数乘法原理处理即可。
考场上做法过了大样例,但是由于退役了代码就咕咕了,等发代码之后可能会补上吧。

评论

3 条评论,欢迎与作者交流。

正在加载评论...