题解:
太神了不会写啊,看了题解之后写了一下午一晚上才有50部分分
一开始想的是把a的子序列离散化然后和b判断相等
这样对于\(m_i \le 25\)的点可以哈希一下,预处理\(O(nm^2)\),结果T了
发现题解里的这些点的预处理是\(O(nm\log n)\)的!
想了一下,发现不需要离散化,可以定义每个点的名次为前面比它小的个数+1,照样可行!
然后用树状数组+异或哈希就可以拿这20分啦
试着写了一下AC自动机+主席树的离线做法,还是有细节不会处理啊,又去写了kmp的做法。
其实就是匹配b的名次序列在a中出现次数,只不过a中元素的名次依赖于序列的起始位置。
kmp的border是单调递减的,所以用bit维护当前的border,移动now时暴力修改,求名次用bit求
好喵啊!
#include #include #include #include #include
下面这个不会写的代码只是留作纪念
#include #include #include #include #include