CF1474F
感谢 _lgswdn 大佬的耐心讲解,让我学了这题 \(O(n^3)\) 的高妙做法(数据范围可以加个零)
此题解主要为 _lgswdn 题解的具体阐释以及帮作者理清思路开始写题。
首先把原图压缩一下,如何相邻两端都是上升/下降,就将它们合并,这样可以把原图变成一上一下的特殊形状方便分析。
将原图分层后大概是:

要求的是 LIS,我们按值域从小到大考虑。
首先有个细节就是如何分层,一种高妙的做法是用左闭右开表示 \([l,r+1)\) ,这样做的好处是方便找到相邻两层的差值。
设 \(f_{i,j}\) 表示当前考虑到值域上第 \(i\) 层,下标分析到第 \(j\) 段,保证 LIS 最大的情况下的方案数,显然要 LIS 最大,\(fi,j\) 只能从上一层转移而来。
假设从 \(f_{i-1,k}(k \le j)\) 转移而来,它的贡献系数是什么。

中间的东西没有画,显然最后一段 \(j%\) 的最后一个点肯定是一定要选的,设中间会有 \(x\) 个向下的段,\(x+1\) 个向上的段(最后一段若是向下的同理)。
那么现在相当于 \(x+x+1\) 个盘子,\(len\) 个苹果,有 \(x\) 个盘子至多放一个苹果,\(x+1\) 个盘子随便放苹果,盘子本质不同,苹果本质相同,求方案数。
根据插板法,那么 \(ans(x,len)=\displaystyle\sum_{i=0}^{x}\binom{x}{i}\binom{len-i+x}{x}\) ,到新的一层的时候预处理所有 \(ans\) 即可。
那么有 \(f_{i,j}=\displaystyle\sum_{k=1}^{j}Ans(x,len)\)
直接做即可,就是细节有点多。

浙公网安备 33010602011771号