ABC262Ex Max Limited Sequence
ABC262Ex Max Limited Sequence
给定 \(q\) 个整数三元组 \((l_i,r_i,x_i)\),求有多少长度为 \(n\) 的整数序列 \(a\) 满足:
\(\forall i \in [1,n],a_i \in [0,m]\)
\(\forall i \in [1,q],\max\limits_{j=l_i}^{r_i} a_j = x_i\)
答案对 \(998244353\) 取模。
\(1 \leq Q \leq 2 \times 10^5\),\(1 \leq l_i \leq r_i \leq n \leq 2 \times 10^5\),\(1 \leq x_i \leq A < 998244353\)。
首先我们考虑拆限制。\(\max\limits_{j=l_i}^{r_i} a_j = x_i\) 可以拆成下面的两个限制:
-
\(\forall j \in [l_i,r_i],a_j \leq x_i\)
-
\(\exists j \in [l_i,r_i],a_j = x_i\)
对于第一种限制,我们考虑使用线段树对每个 \(a_j\) 求出对应的上界。下文中,把 \(a_j\) 的上界记作 \(g_j\)。
对于第二种限制,容易发现对于 \(j \in [l_i,r_i]\),显然有 \(g_j \leq x_i\),则 \(a_j = x_i\) 的必要条件是 \(g_j = x_i\)。通过这一点我们可以观察到,不同的 \(x_i\) 之间互不影响。
我们考虑枚举所有 \(x_i\) 的值,对于每个子问题可以规约成类似下面的形式:
有 \(n\) 个方格和一些区间,进行黑白染色,要求每个区间中至少有一个黑格。
容易发现,如果区间之间存在包含关系,我们只需要保留小区间即可。由此我们可以先保留这些小区间,然后按右端点升序排序。由于区间互不包含,易证左端点有升序关系,此时 dp 是简单的。
按 \(x_i\) 从小到大处理即可,但是还没完。你发现数据范围较大,所以在每一步中离散化即可。
时间复杂度大概是 \(O(q \log q)\) 左右的。弱化版也可以通过。

浙公网安备 33010602011771号