csp-s 模拟105 小w的魔术
个人觉得这道题非常的巨神,决定单独拿出来写一下题解。
一开始自己还看错题了,觉得这道题不可做。然后又读了一遍,觉得很可做,做到后来又觉得非常不可做。
很容易想到一个傻×容斥:用总情况减去合法情况,得到的是最终答案。
我们直接算合法的情况肯定是不行的,要考虑重复的情况。
考虑我们怎么想这个重复的情况。
重复?我们在重复相同算法的时候把相同的贡献计算了多次。
什么时候我们才会计算重复?在我们所计算的元素与原串中元素出现了重复,我们将原串和新串混为一谈,会导致错误。
首先我们可以作出贡献的位置有s+1个,就是插空。
我们怎么表示出来这种重复?
我们用{}表示插入的串,那么[........x]{.......x}[........]与[........]{..........}[x........]会有重复。
下面就该感性理解了。
上面的两个串是什么意思?“.”表示普通的字符,x表式“特殊的”(就是我要观察重复的)字符,然后我们会发现随着插入区间的移动,左边相当于是把右边的x“挤”到了左边。然后如果插入元素的开头是一个相同的x的话,左边的形式就会讲右边的形式重复计算。
那么只要我们规避这种情况就好了。
那它还会有[........]{x........}[x.........]和[........x]{.......}[.........]的情况呢?
其实两种情况是一样的。区间挪一挪就好了,我们照样可以把下面的形式转移成上面的形式,那么重复的含义会有所变化,但是两种情况等价,所以只用考虑一种情况就好了。
式子:$26^n-26^{n-|s|}-25*26^{n-|s|-1}*|s|$
缘定,伴今生