根据数据范围做题是个好技巧。
小数据范围(<50):状压二进制枚举搜索容斥
1e5数据范围O(n)单调队列kmp递推线性dp
O(nlogn)二分线段树树状数组st表倍增
O(n sqrt(n))莫队分块