最开始观察\(a\)没看出什么东西来,于是看\(b\),由于统计的是不同的\(b\)的数量,所以考虑一个\(b\)可以由什么\(a\)搞出来,然后就不难发现如果我们将\(a\)分段(相同的数放一段),那么对应的\(b\)在同一段就会从\(1\)开始增加,然后到达一个峰值之后再减小到\(1\)(开头和结尾的两段只有减少或增加)
此时我在赛时搞出来一个模型:在\(b\)中放若干个\(1\),满足\(1\)的个数减去\(1\)的段数(连续的\(1\)为一段)加上一不小于\(k\),而且每一段至少有两个\(1\);不难知道这是正确的,但是太难计数了
我们最开始以\(a\)为观察对象不行,现在换成\(b\)了有一点点曙光,但是发现还是太难计数,这个时候就要重新去观察\(a\),就将\(a\)分段,于是可以发现,对于\(a\)来说,不同的分段对应不同的\(b\)(也就是说这是单射),然后就可以DP计数了
但是\(b\)到\(a\)却不是单射。比如\(a=[1,2,2,3]\)和\(a=[1,2,3,1]\)对应的\(b\)都相同,但是前者分了三段,后者分了四段,这会导致重复计数
然而,这种情况只有可能在中间发生,于是我们DP计数的时候排除这种特殊情况就好了
标签:Distance,Different,分段,计数,一段,单射,DP From: https://www.cnblogs.com/dingxingdi/p/18347243