题意:给定字符串S,然后M个字符串T。Q次询问,每次给出(L,R,l,r),问S[l,r]在L到R这些T字符串中,在哪个串出现最多,以及次数。 思路:把所有串建立SAM,然后可以通过倍增走到[l,r]在SAM上的位置p,然后在这个位置p上求,求的过程就是一个线段树求区间最值。 现在的关键是得到线段树 ...
分类:
其他好文 时间:
2019-08-30 18:43:07
阅读次数:
53
[HEOI2012]旅行问题 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2746 题解: 这个是讲课时候的题。 讲课的时候都在想怎么后缀自动机.... 当然是能做啦,$SAM$这么强。 实际上是个$AC$自动机,按照题目模拟就行了。 ...
分类:
其他好文 时间:
2019-08-27 23:04:10
阅读次数:
110
"题目" 题目大意 给你一棵树,然后有一堆询问,每次给出两个点。 问所有点到两个点中最近点的距离的最大值。 正解 本来打了倍增,然后爆了,也懒得调…… 显然可以在两个点之间的路径的中点处割开,一边归一个点管。 有个比较显然的思路是DP,设$f_x$表示$x$子树内的最远点,$g_x$向父亲那边走的最 ...
分类:
其他好文 时间:
2019-08-27 21:30:00
阅读次数:
86
A 两个指针$O(N)$扫一遍 我失智了,还用了二分找右边界,L是单调递增的,直接while()++就行了 我要是再开了long long但是输出用了"%d"的话我当场倒立女装洗头 B 倍增+差分 差分写挂了,拍到一组大样例错了,然后一直调调调,成功把代码从能过小样例调到WA0,没时间也没保存之前的 ...
分类:
其他好文 时间:
2019-08-27 17:28:27
阅读次数:
84
A - How far away ? HDU - 2586 LCA倍增 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<stack> #include ...
分类:
其他好文 时间:
2019-08-25 12:33:16
阅读次数:
88
"题目链接" 真真一道倍增好题。 先说70分思路 我的: 从后边的城市往前跑,这样就能$n^2$时间内得到从城市$i$到城市$j$的路程了。........反正超级麻烦,最后也没写出来。后来想想最直接的暴力好像是$n m$,70分也能过。 代码估计以后也看不懂了。。。 cpp include inc ...
分类:
其他好文 时间:
2019-08-24 20:47:36
阅读次数:
66
题解——dinner(二分+倍增) 见ssw02的: "题解——慕斯蛋糕" 好像这道题 二分+二分+贪心 也可以。(日后更,T3还没改) 如有不足,请大佬指出 ...
分类:
其他好文 时间:
2019-08-22 14:40:15
阅读次数:
80
ST算法是求解RMQ问题的好方法,可以在0(NlogN)的预处理后实现O(1)的查询。该算法是在倍增的思想基础上实现的,比较基础,理解起来也不难。 补充几个要点: RMQ问题:即区间最值问题,给出一个序列a,要求求出区间[l,r]内的最大值。 倍增:(来自lyd的蓝书) log2(x)函数:返回$l ...
分类:
编程语言 时间:
2019-08-20 14:05:03
阅读次数:
92
·丧 写法一、树上倍增 ·倍增:以2^k为步来走 ·说明: Dep[v]记录节点v的深度(层数)fa[v][k]记录节点v向上第2k个祖先的编号·预处理:fa[v][k]=fa[fa[v][k-1]][k-1]; ·向上走(Go_up)的实现: s为倍增的上限,比如这个树的总层数为8,则s为3(23 ...
分类:
其他好文 时间:
2019-08-20 12:32:30
阅读次数:
65
题目描述: 给定一个n个点m条边的连通图,保证没有自环和重边。对于每条边求出,在其他边权值不变的情况下,它能取的最大权值,使得这条边在连通图的所有最小生成树上。假如最大权值为无限大,则输出-1。 题解: 先求出图的一棵最小生成树: 对于不在树上的边(x,y), 它的权值只要小于树上x到y路径中一条边 ...
分类:
其他好文 时间:
2019-08-19 19:23:33
阅读次数:
94