「雅礼集训 2017 Day1」字符串
%%% ???
emmmm…
这个题一眼看上去是个神题,结果看了题解。。发现就是个暴力 做法十分神奇~~
问题的关键在于这个$\sum w \le 10^5$ ,在$k$很大的时候$q$很小,$q$很大的时候$k$很小,就可以设计不同的算法来搞它
随便设一个值$S$,比如$\sqrt n$
当$k \le S$时
$k$比较小,所以可以允许我们在询问串上做很多的事情
考虑一个暴力的方法!
$O(k^2)$,你没有看错,对于每个询问串,暴力统计每个区间的值,在自动机上走一走就好了
由于$m$可能比较多,所以可以用莫队,记录一下每个区间被询问了多少次,乘上对应值即可
复杂度$O(m\sqrt m +qk^2)$
当$k \ge S$时
$q$比较小,允许我们在每个询问花费更多时间
于是直接暴力。。。对于每个询问,把每个区间都做一次,只要按右端点顺序在自动机上走,同时倍增查答案即可
1 |
|