题解:P10008 [集训队互测 2022] Range Minimum Element

posted on 2025-05-04 08:19:15 | under | source

题意:给定 \(n\)\(m\) 个区间 \([l_i,r_i]\),对每个值域在 \([1,c]\) 的序列 \(a\) 都生成序列 \(b\),其中 \(b_i=\min\limits_{j\in[l_i,r_i]}a_j\),求有多少种不同的 \(b\)\(n\le 100,m\le \frac {n(n+1)}2,c<998244353\)

发现这题和某道 AT 题很像,考虑固定单射,对一个 \(b\) 构造一个特定的 \(a\):一开始 \(a\) 全是空位,从大到小考虑 \(b\),对于每个区间将剩余空位填当前值(无空位无解),最后所有空位填 \(1\)

然后考虑判定 \(a\) 是否能由上述方式构造:从小到大考虑 \(a\),先从值为 \(1\) 开始,找到第一个 \(a_x=1\),那么跨过该区间的 \(b\) 都是 \(1\) 不用管了;对于 \([1,x)\) 化归到值为 \(2\) 的情况,但是有前提 \([1,x)\) 的所有区间的并必须是 \([1,x)\) 否则矛盾;对于 \((x,n]\) 化归到值为 \(1\) 的情况。当然有可能不存在 \(x\),那么条件还是区间并为 \([1,n]\)

容易 dp,记 \(f_{i,l,r}\) 为考虑值为 \(i\) 区间为 \([l,r]\) 的方案,转移如下:

  • \(f_{i,l,r}\gets I_{l,r}f_{i+1,l,r}\)
  • \(f_{i,l,r}\gets \sum\limits_{k\in [l,r]} I_{l,k-1}f_{i+1,l,k-1}f_{i,k+1,r}\)

容易拉插优化,\(O(n^4)\)

posted @ 2026-01-15 08:19  Zwi  阅读(1)  评论(0)    收藏  举报