3670: [Noi2014]动物园】的更多相关文章

3670: [Noi2014]动物园 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1521  Solved: 813[Submit][Status][Discuss] Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法. 某天,园长给动物们讲解KMP算法. 园长:“对于一个字符串S,它的长度为…
3670: [Noi2014]动物园 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2738  Solved: 1475[Submit][Status][Discuss] Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法. 某天,园长给动物们讲解KMP算法. 园长:“对于一个字符串S,它的长度…
http://www.lydsy.com/JudgeOnline/problem.php?id=3670 题意:太水了= = #include <bits/stdc++.h> using namespace std; const int N=1000005, mo=1000000007; int n, p[N], pos[N], num[N], tot; char s[N]; bool vis[N]; void dfs(int x) { if(p[x]) dfs(p[x]); vis[x]=1…
Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法. 某天,园长给动物们讲解KMP算法. 园长:"对于一个字符串S,它的长度为L.我们可以在O(L)的时间内,求出一个名为next的数组.有谁预习了next数组的含义吗?" 熊猫:"对于字符串S的前i个字符构成的子串,既是它的后缀又是它的前缀的字符串中(它本身除外),最长的长度…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3670 题意概述:令num[i]表示字符串由1~i的字符形成的前缀中不相重叠的相同前后缀的数量,求mul{ num[i] | 1<=i<=L }mod1000000007. 实际上只要对KMP理解的好这就是个水题,可以想到dp求得num数组,num[i]=num[f[i]]+1,f[i]表示字符串的前缀1~i形成的不重叠的最长相同前后缀长度,如果f[i]=0的话就不存在.题目的提醒实际上…
求这玩意: 对于字符串S的前i个字符构成的子串,既是它的后缀同时又是它的前缀,并且该后缀与该前缀不重叠,将这种字符串的数量记作num[i] 对1,000,000,007取模的结果 n≤5,L≤1,000,000 发现$num[i]$有和$fail[i]$类似的递增性质,$num[i]<num[i-1]+1$ 然后$KMP$之后$fail$递推出$sum[i]$为$i$的$fail$祖先有几个 再类似求$fail$的过程求一遍$num$,只是多了判断$2*j \le i$,用$sum[j]$更新答…
题目 传送门:QWQ 分析 像求next一样求num. 第二次求next时加上不超过一半的条件. 时间复杂度: $ \huge O ( n ) $ 代码 // luogu-judger-enable-o2 #include <bits/stdc++.h> using namespace std; ; ], num[]; ]; long long ans; void kmp() { ans=; nxt[]=-; num[]=; ,j;i<=n;i++) { ]; j>= &&…
题目链接 题意:给n个字符串,求出每个字符串的num值,加1后相乘.num[i]表示1~i中,有多少没有重叠的公共前缀后缀. 分析: kmp中p数组表示最大的公共前缀后缀.设一cnt数组,表示1~i中有多少公共前缀后缀(包括重叠的),那么cnt[1]=1,(自己是自己的公共前后缀). 那么:cnt[i]=cnt[p[i]]+1:因为1~p[i]与i-p[i]+1~i是相等的,所以1~p[i]的公共前后缀一定被包含在1~i中,且字符串1~i也是自己的公共前后缀,所以再+1 预处理出cnt数组后,那…
3670: [Noi2014]动物园 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 174  Solved: 92[Submit][Status] Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法. 某天,园长给动物们讲解KMP算法. 园长:“对于一个字符串S,它的长度为L.我们可以在O(L)…
http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么num[i] 就是i到根节点的路径上,所有<=i/2 的节点的个数 这棵树的点随深度的递增而增大 所以用st表存这棵树 st 表 开[logn][n],常数优化求st表的过程 #include<cmath> #include<cstdio> #include<cstring…