GYM106559B Buhăiești / 转身后退 思路分析(待补)
GYM106559B Buhăiești / 转身后退 思路分析
朴素想法
题目主要限制有两项:\(\text{mex}_{j=1}^{i}a_j\le \text{mex}_{j=1}^{i}b_j\),\(A\) 字典序严格小于 \(B\)。
将限制加入状态考虑,那么状态应包含以下元素:
- 处理位置枚举变量 \(i\);
- 前缀 \(\text{mex}\) 值 \(j\)
如何处理字典序限制? \(\rightarrow\) 类似与数位 DP,可以钦定前 \(i-1\) 位全都达到上限,考虑第 \(i\) 位的填值情况。那么再加入状态 \(0/1\) 表示是否达到上限。
问题分析
上述状态定义存在一个内部自指:若 \(i\) 填值将原本 \(\text{mex}\) 覆盖了,新的 \(\text{mex}\) 取决于之前哪些值填了,而这项信息缺失了。若枚举新的 \(\text{mex}\),会出现不合法的转移链。
改进想法
此时不难发现对于一个序列,我们能够确定的信息只有 \(\text{mex}\) 以前的元素是必然存在的,\(\text{mex}\) 及其以后的值若已经填了 \(x\) 个,那么是一个在对应值域中离散分布的 \(x\) 个元素。这样序列就被分为了两段,前一段是确定部分,可以通过转移得到确定信息,而离散部分在之后的转移中会被确定下来,即它们是候选确定值,间接影响转移。
由上述分析可以得到一种延时确定 DP 的构造方式,设首次小于 \(B_i\) 的位置是 \(p\):
我们将字典序的限制变为更本质的方式确定,也就是钦定 \(i-1\) 位后第 \(i\) 位的本质含义——\(i\) 位首次小于 \(B_i\)。
考虑转移,对于当前取值进行分类讨论,记已出现的值的集合为 \(S\):
- 已经出现,\(dp\) 系数为 \(j + |S\cap (j,m]| + k + t\);
- 未出现且 \(>j\),系数为 \(k+1\);
- 填 \(j\),枚举下一个 \(\text{mex}\),设为 \(r\),记 \(x=|(j,r)\setminus S|\),\(y=|(j,\min(r,b_p))\setminus S|\),那么就转移到 \((r,k-x,t)\),系数为 \(1\),若 \(t=1\),还可以转移到 \((r,k-x+1,0)\),系数为 \(y\)。
令 \(u=|(j,m]\setminus S|\),\(v=|(j,b_p)\setminus S|\)。剩余值的系数为 \(\binom{u}{k},(l=0)\) 或 \(v\binom{u-1}{k},(l=1)\)。

浙公网安备 33010602011771号