摘要:
把所有串接在一起,用不同的分隔符分隔, 然后跑后缀数组。。 对于每个询问串暴力跑出height大于询问串长度的区间统计答案即可。。。。。。。。。。。。。。但是在洛谷上这种做法被卡掉了 面向数据加个优化水过。 阅读全文
摘要:
获得原数列的差分数列,离散化后接在一起,中间用没有出现过的数分隔,于是问题就转化成求这个数列的最长重复子串,且每一段上都至少有一个子串。 求出后缀数组,二分答案即可。 阅读全文
摘要:
注意x,y数组的意义 x[i]表示编号为i的后缀的第一关键字 y[i]表示第二关键字排名为i的后缀编号 h[i]表示编号为i的后缀与其前一名的最大公共前缀 height[i]表示排名为i的后缀与其前一名的最大公共前缀 h[i]>=h[i-1]-1 代码打的比较丑,有时间重新打一遍 阅读全文
摘要:
简单莫队 阅读全文
摘要:
用主席树记录每个节点到根节点的信息,用树上差分的思想查询。 合并时把节点数小的合并到节点数大的上,也就是启发式合并, 合并时重建小树上的主席树。 阅读全文
摘要:
1 #include 2 using namespace std; 3 const int N=100010; 4 int n,m,v[N],color[N],root[N],lc[N],rc[N],dis[N]; 5 bool vis[N]; 6 int find(int k){return color[k]==k?k:color[k]=find(color[k]);} 7 ... 阅读全文
摘要:
树状数组套线段树 阅读全文