B
给定无限长的数轴。
每次操作选择两个白格子 $i,j$,要求 $\lvert i-j\rvert\le k$,把它们染黑。
给定集合 $\{a_n\}$,表示要把哪些格子染黑,除了这些格子要求至多只有一个是黑色的。
最小化合法的 $k$。
$n\le 2000,a_i\le 10^{18}$
不咋好的题。
注意到只能染白格,则若是偶数情况必须两两匹配,相邻时最优。
奇数考虑枚举加的那个格子,贪心肯定加在 \(a_{i}\pm 1\) 的位置,加的格子不能跟原来的重复,枚举即可 \(\mathcal O(n^{2}\log n)\)。
想做到 \(\mathcal O(n)\) 是可行的,只需枚举那个与附加格子匹配的格子,注意到连续段时需要找最近的算贡献,都可以预处理。
代码
C
有 n 天,第 i 天会有一种物品上架(存在时间是后缀),价格为 i。
若某天购买了至少两件物品,则最贵的物品免费。
给出一个 01 串,表示哪些天能购买物品。
现在要购买所有物品恰一件,最小化花费和。
$n\le 4\times 10^5$
不好的贪心题。
直接贪就是对的。
考虑最大化免费的物品价值和,注意到一个物品能免费,必须找之前的某件物品与之匹配。
那么设计贪心,从后往前扫,对于某个 1,找到最近的 0 或者最远的 1 与之匹配,能找到就可免费,双指针做到 \(\mathcal O(n)\)。
正确性显然。
有一点,启发我们对于这种前驱后继类的贪心问题,可以通过调换顺序来思考。
这种调整子结构的思想甚至应用在了容斥中。
D
给定数组 a,设 $s(l,r)=\sum\limits_{i=l}^r a_i$。
构造数组 b,依次为 $s(1,1),s(1,2),\cdots,s(1,n),s(2,1),\cdots,s(n-1,n),s(n,n)$。
若干次询问,给出 $l,r$,求 $\sum\limits_{i=l}^r b_i$。
$n,q\le 3\times 10^5$
差分为前缀,考虑预处理分块。
对于 \(l\) 相同的 \(s\) 分块,则需要处理前缀和和以及算出块内前缀和。
两部分都是简单的,第二部分形如一个等差数列,前缀和减一下,像是哈希的那种计算方式,需要预处理一些东西。
瓶颈在二分确定块的位置,离线做可线性,\(\mathcal O(n+q\log n)\)。
E
对于一个可重集合 $\{a_n\}$,定义它的价值为 $n-pop(a_1~or~a_2~or~\cdots~or~a_n)$。
给出一个可重集合 a,决策它的一个非空子集,最大化价值。
$t\le 100,n\le 100,a_i\le 2^{60}$
没啥性质,决策是全局型的,数据范围小而无法 dp。
然而最优化问题还有一手网费流。
考虑建图,把 \(a_{i}\) 向各个 1 位连边,跑最大权闭合子图即可。
另一种想法,考虑选一个 \(a_{i}\) 就不能选一个 0 位,此时是和的形式。
故建出二分图,最大独立集即可。
F
![[【CF2026F】Bermart Ice Cream]]