首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
P2375 动物园
】的更多相关文章
洛谷 P2375 动物园
题目详情 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法. 某天,园长给动物们讲解KMP算法. 园长:"对于一个字符串SS,它的长度为LL.我们可以在O(L)O(L)的时间内,求出一个名为next的数组.有谁预习了next数组的含义吗?" 熊猫:"对于字符串SS的前ii个字符构成的子串,既是它的后缀又是它的前缀的字符串中(它本身除外)…
洛谷P2375 动物园
我要死了.这是我做过的最恶心的题之一. 天下第一的大毒瘤.有gay毒. 我不如熊猫好多年... 题意:给定字符串,求g[i],表示:[0, i]中满足该子串既是前缀又是后缀还不重叠的子串数. 解:题面都写了KMP,想必跟KMP有关. 然后我痛苦的思考了1天无果...... 我首先想到求出nex[]和f[],f[]表示可重叠的既是前缀又是后缀的子串数. 然后想找出f[]和g[]的关系,失败. 然后想到再来一个len[]表示f[]最长的那一个的长度,还是不行... 被折磨了一天,撑不住了,在吃完饭的…
P2375 动物园
入口 题目的大意就是输出以任意一个字符结尾,既是前缀,又是后缀,且长度不超过总长度的一半的方案书的乘积. 考虑使用kmp 在处理失配数组的同时,处理出来以每个字符结尾的时的,能有多少个前缀和后缀相同的数量. 然后在进行一次类似kmp的匹配,在这次匹配中处理出来答案. 先是为什么要处理多少个前缀和后缀相同的数量. 比如说,b是a的前缀和后缀,c是b的前缀和后缀(都合法) 然后c也肯定是a的前缀和后缀.处理出这个数组来,我们在寻求答案是只需要找到第一个符合条件的前缀&&后缀.加上我们预处理的个…
[luogu P2375] [NOI 2014] 动物园
[luogu P2375] [NOI 2014] 动物园 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法. 某天,园长给动物们讲解KMP算法. 园长:“对于一个字符串S,它的长度为L.我们可以在O(L)的时间内,求出一个名为next的数组.有谁预习了next数组的含义吗?” 熊猫:“对于字符串S的前i个字符构成的子串,既是它的后缀又是它的前缀的字符串中(…
洛谷 P2375 [NOI2014]动物园 解题报告
P2375 [NOI2014]动物园 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法. 某天,园长给动物们讲解KMP算法. 园长:"对于一个字符串\(S\),它的长度为\(L\).我们可以在\(O(L)\)的时间内,求出一个名为next的数组.有谁预习了next数组的含义吗?" 熊猫:"对于字符串\(S\)的前\(i\)个字符构成的子…
2021.11.16 P2375 [NOI2014] 动物园(EXKMP+差分)
2021.11.16 P2375 [NOI2014] 动物园(EXKMP+差分) https://www.luogu.com.cn/problem/P2375 题意: PS:这道神题的背景让人疑惑,重点是当我飞快磨磨唧唧打出正确自认为正确的代码时,我第三个样例算出了144.讨论区一看,背景有大大的锅,哭了. 有n个字符串,对每个字符串S,设 num[i] 为 \(1 \dots i\) 的不重叠的相同的前缀和后缀的数量. 例如: abcababc 的 num 数组为 \(0,0,0,1,1,1,…
【题解】洛谷P2375 [NOI2014] 动物园(KMP)
洛谷P2375:https://www.luogu.org/problemnew/show/P2375 思路 这道题可以说是完全刷新了本蒟蒻对KMP的理解 感觉对next数组的理解上升到一个新的高度 首先题目给出了next数组的定义 关于整个字串 next[len]为前缀与后缀相同的最长长度 我们给出一张从你谷题解中扒下来的图 我们可以观察到对于整个长度为len的字串a next[len],next[next[len]],next[next[next[len]]]...全部都是满足前缀与后缀相同…
[洛谷P2375] [NOI2014]动物园
洛谷题目链接:[NOI2014]动物园 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法. 某天,园长给动物们讲解KMP算法. 园长:"对于一个字符串 \(S\) ,它的长度为 \(L\) .我们可以在 \(O(L)\) 的时间内,求出一个名为next的数组.有谁预习了next数组的含义吗?" 熊猫:"对于字符串 \(S\) 的前 \(…
【KMP】洛谷P2375 [NOI2014]动物园 题解
一开始的方向应该对了,但是没有想到合理的优化还是没写出来…… 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法. 某天,园长给动物们讲解KMP算法. 园长:“对于一个字符串\(S\),它的长度为\(L\).我们可以在\(O(L)\)的时间内,求出一个名为\(next\)的数组.有谁预习了\(next\)数组的含义吗?” 熊猫:“对于字符串\(S\)…
P2375 [NOI2014]动物园
考虑kmp. 这个题的主要问题就在于怎样使复杂度是正确的O(n). 可以先预处理一个数组cnt[]表示不考虑不能相交这个限制,有多少个border. 这个东西其实也就是fail树上的深度. 然后考虑怎么算num,直接暴力跳到长度<=i/2为止,第一合法个位置的cnt就是答案. 这样做复杂度依然是均摊O(n)的,因为j每次最多+1. 考虑Z-box. 求出每个后缀和原串的lcp后. 枚举每一个合法后缀的左端点在什么地方. 然后这个后缀会对长度为min(i,lcp(suf))产生一个贡献,取min那…