CF1540C2 Converging Array (Hard Version) 题解
前言:
难的*2900。
思路:
显然我们应该先研究给定 $a$ 如何判定最终的 $a_1'$ 是否小于 $x$。
首先的想法是手摸小数据,但是这东西比 ARC126E 还难摸。所以想简化只能找必要条件。问题是这东西不好构造。
那么一步一步来。设最终序列为 $d$。注意到操作两边 $\max/\min$ 的是同时取到极值的。
-
注意到和:每次操作不会改变两数的和,所以有 $\sum\limits_{i=1}^{n} a_i = \sum\limits_{i=1}^{n} d_i$。
-
注意到差:最终一定会改变差小于 $b_i$ 的位置,所以有 $d_i-d_{i-1} \ge b_i$,$d_1 \ge x$。
三个量,两个条件,这启发我们消元消去 $d$。
所以现在我们有 $\sum_{i=1}^n a_i = \sum_{i=1}^n d_i \ge ix+\sum_{i=1}^{n-1}(n-i) \cdot b_i$,显然它是一个必要条件。那它是否充分呢?很遗憾简单手摸后发现并不是。
但是后面的式子事实上适用范围更广,即$\sum_{j=1}^id_j \ge ix+\sum_{j=1}^{i-1}(i-j) \cdot b_i$,这启发我们考虑 $a$ 与 $d$ 的大小关系。
- 注意到大小:将任意一组操作序列划分为左边操作,右边操作与对两者的操作,由上文可知前两者对和均不影响,而对两者的操作总会使前缀的和变小,于是有 $\sum_{j=1}^ia_j \ge \sum_{j=1}^id_j$。
那么现在我们有了 $\sum_{j=1}^ia_j \ge ix+\sum_{j=1}^{i-1}(i-j) \cdot b_i$,它是否充分呢?是的,若某一时刻 $a$ 不满足该条件,则存在 $\sum_{j=1}^ia_j < \sum_{j=1}^id_j$,矛盾。
得到此充要条件后,注意到我们可以直接处理含 $c$ 的问题了。大力 $O(n^4)$(视 $n,v$ 同级,此文其他复杂度同理) 背包即可通过 $C1$。
对于 $C2$,$O(tn^4)$ 无法通过,使用前缀和优化背包过程,最终 $O(tn^3)$ 仍无法通过。考虑 $\text{DP}$ 状态已达 $O(n^3)$ (笔者太菜不会多项式),我们必须裁剪询问。
考虑特殊值,当 $x$ 极小时,此时有答案为 $\prod_{i=1}^n(c_i+1)$;$x$ 极大时,此时有答案为 $0$,发现可以把大于某个上界的与小于某个下界的 $x$ 单独分出来处理查询。
那么这个上下界是多少?回到式子 $\sum_{j=1}^ia_j \ge ix+\sum_{j=1}^{i-1}(i-j) \cdot b_i$,把已知量套进来 $\sum_{j=1}^ic_j \ge ix+\sum_{j=1}^{i-1}(i-j) \cdot b_i$,所以有 $0 \le ix+\sum_{j=1}^{i-1}(i-j) \cdot b_i \le iV$,即 $-\frac{\sum_{j=1}^{i-1}(i-j) \cdot b_i}{i} \le x \le V-\frac{\sum_{j=1}^{i-1}(i-j) \cdot b_i}{i}$。$i=n$ 时显然为最终上下界(自证不难)。
上下界内暴力与处理即可 $O(1)$ 回答询问。总时间复杂度为 $O(n^4+q)$。

浙公网安备 33010602011771号