另类KMP
题目链接:poj 3167
题意:给定主串 S 和模式串 P ,均由数字 1~25 组成。定义串 A 与串 B 相等,当且仅当两个串长度相等,且对于任意 i,第 i 个数在各自串的前 i 个数中排名相等;按照上述要求进行匹配,输出在哪几个位置可以匹配成功。
题解:首先思考如何算排名相等。我们可以发现如果排名相等那么两个串中比 i 小的数的个数一定相等而且和 i 一样的数的个数一定也相等。因为数的种类很少,所以我们就可以用前缀和来快速的求出“i 的排名”,并以此为新的等于条件然后进行 KMP 就好了。
我思故我在:膜拜大佬 SXY 。