[luogu P2375] [NOI 2014] 动物园 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法. 某天,园长给动物们讲解KMP算法. 园长:“对于一个字符串S,它的长度为L.我们可以在O(L)的时间内,求出一个名为next的数组.有谁预习了next数组的含义吗?” 熊猫:“对于字符串S的前i个字符构成的子串,既是它的后缀又是它的前缀的字符串中(…
[LOJ 2720][BZOJ 5417][UOJ 395][NOI 2018]你的名字 题意 给定一个大串 \(S\) 以及 \(q\) 次询问, 每次询问给定一个串 \(T\) 和区间 \([l,r]\), 求 \(T\) 中有多少本质不同的子串不是 \(S[l:r]\) 的子串. \(|S|\le 5\times 10^5,q\le 10^5,\sum|T|\le10^6\). 题解 普通的码农字符串题... 获得成就: \(40\texttt{min}(2400\texttt{s})\)…
$LCT+枚举$ 复习一下$LCT$模板. 先以$Ai$为关键字$sort$,然后$Ai$从小到大枚举每条边,看能否构成环,构不成则加边,构成则判断,判断过了就切断$Bi$最大的边. 我的边是编号为$i+n$的点,忘了这点调了好久$QAQ$ $sosad$ #include<cstdio> #include<cstring> #include<algorithm> #define N 150003 #define read(x) x=getint() using nam…
Description 题库链接 \(t\) 组询问.每组询问给出一个字符串 \(S\) .要求求出一个 \(num\) 数组一一对于字符串 \(S\) 的前 \(i\) 个字符构成的子串,既是它的后缀同时又是它的前缀,并且该后缀与该前缀不重叠,将这种字符串的数量记作 \(num_i\) .输出 \(\prod\limits_{i=1}^{lenth(S)}(num_i+1)\) . \(1\leq t\leq 5,1\leq lenth(S)\leq 1000000\) Solution 显然…
题面 其实好像并不难,因为猫老师(应该是猫老师吧,还是LX大佬?)有一句话让我印象深刻:“包的(border)的包的还是包的”=.= 统计个数不就是统计长度么,然后根据上面那句话,当$nxt$长度大于$\frac{len}{2}$时我们就不断跳$nxt$直到满足条件即可 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; ; int nxt[N],num[N]; lo…
KMP算法 其实就像题面描述的那样……主要还是KMP算法的基础上搞一些DP(递推)之类…… 随便yy一下就可以得到50分了,因为num数组跟next的关系还是很密切的…… f[i]=f[next[i]]+1; 然后取 t=next[i]; while(t*2>i) t=next[t]; num[i]=num[t]+1; 然而我这样写……TLE了QwQ 因为这样每次都需要重新定位t…… 所以为了省时!我们直接用一个全局指针来搞……(UOJ是个宝地压-参考了RXDoi 神犇的代码) P.S.这次自己…
最近感到KMP不会啊,以前都是背板的现在要理解了. #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; ; char S[Maxn]; int k,P[Maxn],Ans; inline void Kmp(char * Str) { ; ;Str[i];i++) { ]!=Str[i] && j)…
http://www.lydsy.com/JudgeOnline/problem.php?id=3670 http://uoj.ac/problem/5 可以建出"KMP自动机"然后在树上二分或单调计算. 也可以不建树,每个位置维护fail指针和nxt指针. nxt指针指的是在小于等于当前位置除以2的fail指针能跳到的最大的位置,都可以\(O(n)\)维护. #include<cstdio> #include<cstring> #include<algo…
http://www.lydsy.com/JudgeOnline/problem.php?id=3672 http://uoj.ac/problem/7 链上的情况可以用斜率优化dp.树上用斜率优化dp时,单调队列的复杂度是均摊$O(n)$的,所以放到树上做“可持久化单调队列”复杂度是$O(n^2)$的,所以不能树上斜率优化. 这道题可以用树链剖分(时间复杂度$O(nlog^3n)$)或者点分治套cdq分治(时间复杂度$O(nlog^2n)$).因为树链剖分感觉比较难写,而且每个节点用vecto…
Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法. 某天,园长给动物们讲解KMP算法. 园长:“对于一个字符串S,它的长度为L.我们可以在O(L)的时间内,求出一个名为next的数组.有谁预习了next数组的含义吗?” 熊猫:“对于字符串S的前i个字符构成的子串,既是它的后缀又是它的前缀的字符串中(它本身除外),最长的长度记作next[i].…