专栏文章
题解:P14636 [NOIP2025] 清仓甩卖 / sale
P14636题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mimyrze5
- 此快照首次捕获于
- 2025/12/01 17:46 3 个月前
- 此快照最后确认于
- 2025/12/01 17:46 3 个月前
相信自己的做法不会有错,并不复杂。场上通过所有大样例。
首先统计是最优的肯定不好做,考虑统计不是最优的,然后用总方案数减去。
发现这种情况就是在只剩两块钱的时候,先选了价格 的物品 ,后面买不了价格 的,只能再选一个价格 的物品 或者没有能买的了。
这时候不一定最优,因为如果不选 ,直接就买一个价格 的物品 可能更优秀。
考虑枚举 ,设为 。设 为 ,则要求 ,原因是我们在面临这两个物品的时候先选了 (性价比高)。
先将物品排序,二分得到 。
接着枚举 ,设为 ,则有 ,且 (我们要求其不优)。
现在要求预处理后,已知 ,可以 算出方案数。
把刚才的不等式再拿出来:,发现合法区间变成 , 可以双指针得到。
我们在枚举 之后,可以先枚举每个 对应的方案数,这里的方案数只考虑 的价格取值,由于已经知道 ,可以再结合一个性质推出各个区间有多少个 和多少个 ,这个性质就是:单独考虑价格为 或 ,选取的物品都是一个后缀。而显然, 是从后往前第一个没选的 。所以就很好算了。
设 的时候 的价格取值方案数为 ,则求出 的后缀和 即可快速得到 的方案数总和。
接下来考虑 的价格取值方案(显然我们已经钦定了 填 ),在 中,必须都填 ,这样才能保证选完 ()后我们会选择 (),而在 中,填什么是无所谓的,所以我们的方案数就是 。
现在似乎做完了,但是还要考虑不存在 的情况(),情况类似,方案数就是 。
时间复杂度 。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...