[luoguP2336] [SCOI2012]喵星球上的点名(后缀数组 + 暴力)


传送门

原本的想法是把所有的串不管是名字还是询问都连起来,记录一下询问串在sa数组中的位置

对于每个询问可以在sa数组中二分出左右边界,第一问用莫队,第二问差分乱搞。

结果发现我差分的思路想错了,先写了一个暴力,二分出左右边界之后直接从l枚举到r,想试试正确性,就交了一遍,结果过了。。。。

因为是暴力,可以不用二分左右边界,直接向左向右枚举扩展就可以了,st表也不用了,但我懒得改了

#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#define N 2000001using namespace std;int n, m, cnt, mx, len;int M[N], x[N], y[N], s[N], sa[N], b[N], d[N][21], Rank[N], Log[N], height[N], id[N], pos[N], ans[N], num[N];inline int read()inline void build_sa()}inline void build_height()}inline void build_st()Log[i] = log2(i);for(j = 1; (1 << j) < len; j++)for(i = 1; i + (1 << j)  1 < len; i++)d[i][j] = min(d[i][j  1], d[i + (1 << j  1)][j  1]);}inline int query(int l, int r)inline int search2(int p, int llen)return r;}inline int search1(int p, int llen)return l  1;}inline void solve()for(i = 1; i <= n; i++) printf("%d ", ans[i]);}int main()s[len++] = mx++;}for(i = 1; i <= m; i++)mx = 120000;build_sa();build_height();build_st();solve();return 0;}

  



上一篇:2019最新黑链代码expression:隐藏链接代码

下一篇:dedecms5.7怎么安装百度编辑器


二分 后缀数组 st表 暴力
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图