专栏文章

P14636 [NOIP2025] 清仓甩卖 题解

P14636题解参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mimxgcgm
此快照首次捕获于
2025/12/01 17:08
3 个月前
此快照最后确认于
2025/12/01 17:08
3 个月前
查看原文
合法的方案数并不好求,因此考虑正难则反,计算不合法的方案数。
首先尝试刻画一下不合法的条件。显然,如果小 R 购买的糖果是按照性价比排序后的一段前缀,则他买到的糖果一定是最优的;因此,我们只需要考虑中间有一些糖果因为买不起而没有买的情况。设:
  • 小 R 在只剩下恰好一元钱前,购买的最后一颗满足 wi=1w_i=1 的糖果为 yy(其性价比为 aya_y);
  • 小 R 在只剩下恰好一元钱后,遇到的第一颗满足 wi=2w_i=2 的糖果的编号为 xx(其性价比为 ax2\dfrac {a_x} 2);
  • 小 R 在只剩下恰好一元钱后,遇到的第一颗满足 wi=1w_i=1 的糖果的编号为 zz(其性价比为 aza_z);特殊地,若不存在糖果 zz,则认为 z=n+1z=n+1,其原价 aza_z 等于 00
则小 R 会先购买糖果 yy,再购买若干满足 wi=2w_i=2 的糖果,并在只剩下恰好一元钱时遇到糖果 xx;由于小 R 买不起糖果 xx,他只能被迫购买糖果 zz
显然,当 ax>ay+aza_x \gt a_y+a_z 时,购买糖果 xx 是比购买糖果 yy 和糖果 zz 更优的,这种定价方案并不能使小 R 买到的糖果的原价总和最大。于是,我们只需要计算满足 ax>ay+aza_x \gt a_y+a_z 的方案数即可。
我们将所有糖果按照原价从大到小排序,并将此时的下标作为糖果的编号。考虑枚举 xxyyax>ay>ax2a_x \gt a_y \gt \dfrac{a_x}2),设 uu 为最大的满足 au>ax2a_u \gt \dfrac {a_x} 2 的正整数,vv 为最大的满足 avaxaya_v \ge a_x-a_y 的正整数,则有下面的要求:
  • 对于 i[1,x1]i\in [1,x-1]wiw_i 可以等于 1122
  • 对于 i=xi=xwiw_i 需要等于 22
  • 对于 i[x+1,y1]i\in [x+1,y-1]wiw_i 可以等于 1122(若 wi=1w_i=1 则它会被放在 xx 前面,若 wi=2w_i=2 则它会被放在 xx 后面);
  • 对于 i=yi=ywiw_i 需要等于 11
  • 对于 i[y+1,u]i\in [y+1,u]wiw_i 需要等于 22,因为如果 wi=1w_i=1 的话糖果 yy 就不是剩下恰好一元钱前购买的最后一颗糖果了;
  • 对于 i[u+1,v]i\in [u+1,v]wiw_i 需要等于 22,因为如果 wi=1w_i=1 的话糖果 zz 就不满足 ax>ay+aza_x \gt a_y+a_z 了;
  • 对于 i[v+1,n]i\in [v+1,n]wiw_i 可以等于 1122,因为它们都可以作为糖果 zz
同时,设 [1,x1][1,x-1] 中满足 wi=2w_i=2iiff 个,[x+1,y1][x+1,y-1] 中满足 wi=1w_i=1iigg 个,为了使遇到糖果 xx 时剩下恰好一元钱,需要满足 x1+f+g+1=m1x-1+f+g+1=m-1(加 11 是因为还要买糖果 yy)。
对于 xx 前面的糖果,相当于要从 y2y-2 颗糖果里选 mx1m-x-1 颗,让它们的贡献加 11,一共有 (y2mx1){y-2} \choose {m-x-1} 种方案;对于 xx 后面的糖果,[v+1,n][v+1,n] 中的每颗糖果都有两种方案,方案数为 2nv2^{n-v};将两部分相乘,可以得到此时的方案数为 (y2mx1)2nv{{y-2} \choose {m-x-1}} \cdot 2^{n-v}
于是我们只需要枚举 xxyy,利用双指针求出 vv 的值,计算出方案数并相加即可。
时间复杂度 O(n2)\mathcal O(\sum n^2)

评论

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

正在加载评论...