QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: SDSXC

Posted at: 2026-08-10 13:46:11

Last updated: 2026-08-10 14:03:57

Back to Problem

New Editorial for Problem #16507

一个可能更好理解的解释?

令 $f_{i,j,k}$ 表示考虑了前 $i$ 个操作,当前堆中 $\lt j$ 的数恰有 $k$ 个,当前堆中所有 $\geq j$ 的数的乘积的和,最终的答案就是 $f_{n,1,0}$。

插入操作的转移是容易的,分类一下这次插入的数 $\geq j$ 还是 $\lt j$ 即可。

删除操作分两种情况:

  • $k>0$,那么本次操作删除的一定是 $\lt j$ 的数,于是 $k\gets k-1$,乘积不变。

  • $k=0$,那么本次操作完之后依旧满足 $k=0$。考虑如何计算此时的乘积,枚举堆中最小值 $x=j,j+1\dots v$。容易发现 $x\geq y$ 等价于有 $0$ 个数 $\lt y$,所以最小值恰好为 $x$ 时的乘积为 $f_{i-1,x,0}-f_{i-1,x+1,0}$,然后 $x$ 被弹出所以需要除掉一个 $x$。

最后前缀和优化一下即可做到 $O(n^2v)$

Comments

No comments yet.