ARC115E - LEQ and NEQ 题解

第一次遇到容斥与线性 DP 的结合!/se


正难则反,总方案数是 \(\prod a_i\),要减去至少对一个 \(i\)\(X_i=X_{i+1}\)\(X\) 的数量。

这玩意就是个显然的容斥了(现在想起来,容斥正是一种特殊的「先算混合物,然后除杂」的思想)。可以把对 \(i\) 满足的看成一个集合,那么要求的就是这些集合的并的大小。而这个 \(2^{?}\) 个集合的大小都是可以显式求的,对于若干个 \(i\) 的并,设它们把位置们连接成了若干个极大的区间 \([l_i,r_i]\),那么答案就是 \(\prod\min\limits_{j=l_i}^{r_i}\{a_j\}\)

不难发现,若分成 \(x\) 个区间,就是有 \(n-x\) 个连接处,贡献就是 \((-1)^{n-x+1}\)。然后这玩意算出来是作为减数,贡献就是 \((-1)^{n-x}\),对于「正难则反」中的总方案数,就是分成 \(n\) 个区间,贡献就是 \(1\)

那么这个指数级别个集合的并的贡献和该怎么搞呢。它是一个一个区间地乘上去的形式,容易想到线性 DP:把 \((-1)^{n-x}\)\((-1)^n\) 提出来,那么每多一个区间就多个 \(-1\) 的贡献:\(dp_i=-\sum\limits_{j=1}^i\min\limits_{k=j}^i\{a_k\}dp_{j-1}\)。这个就很好处理了,单调栈随便做。

code

posted @ 2021-04-15 22:25  ycx060617  阅读(379)  评论(0编辑  收藏  举报