2752这是一道关于next函数的题
(其实好像也可以用后缀数组暴力搞搞,但大概会超时)
根据next[i]=max{j} (s[0..j]=s[i-j..i] j<i)
不难发现这正是某个串既是前缀又是后缀的形式
所以我们先求一遍kmp,然后就是找出所有这样的串
首先最长的肯定是原串,,次长的肯定是s[0..next[n]]
那下一个呢?答案是只要一直从n按着next迭代下去就能找到可行解。
我们不妨设next[i]=j next[j]=k,当i是可行解,那j一定也是
因为s[0..j]=s[i-j..i]可得s[0..k]=s[i-k..k]=s[i-k,i]
然后就解决了
bzoj3670是今年的noi题,其实也是一样的,只不过多了不能重叠,其实也是很好解决的

 code:poj2752

 var next,q:array[..] of longint;
i,j,n,t :longint;
s:array[..] of char;
ch:ansistring; begin
while not eof do
begin
readln(ch);
n:=length(ch);
for i:= to n- do
s[i]:=ch[i+];
i:=;
j:=-;
next[]:=-;
while (i<n) do
begin
if (j=-) or (s[i]=s[j]) then
begin
inc(i);
inc(j);
next[i]:=j;
end
else j:=next[j];
end;
t:=;
j:=n;
while j<> do
begin
inc(t);
q[t]:=next[j];
j:=next[j];
end;
for i:=t- downto do
write(q[i],' ');
writeln(n);
end;
end.

poj2752

 const mo=;

 var f,next:array[..] of longint;
a:array[..] of char;
k,n,t,i,j:longint;
ans:int64;
s:ansistring; begin
readln(k);
while k> do
begin
dec(k);
readln(s);
n:=length(s);
for i:= to n do
a[i-]:=s[i];
i:=;
j:=-;
next[]:=-;
ans:=;
while i<n do
begin
if (j=-) or (a[i]=a[j]) then
begin
inc(i);
inc(j);
next[i]:=j;
f[i]:=f[j]+;
end
else j:=next[j];
end;
i:=;
j:=-;
while i<n do
begin
if (j=-) or (a[i]=a[j]) then
begin
inc(i);
inc(j);
while (j*>i) do j:=next[j];
ans:=ans*int64(f[j]+) mod mo;
end
else j:=next[j];
end;
writeln(ans);
end;
end.

bzoj3670

poj2752 bzoj3670的更多相关文章

  1. [BZOJ3670][UOJ#5][NOI2014]动物园

    [BZOJ3670][UOJ#5][NOI2014]动物园 试题描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学 ...

  2. 【BZOJ3670】动物园(KMP算法)

    [BZOJ3670]动物园(KMP算法) 题面 BZOJ 题解 神TM阅读理解题 看完题目之后 想暴力: 搞个倍增数组来跳\(next\) 每次暴跳\(next\) 复杂度\(O(Tnlogn)\) ...

  3. [poj2752]Seek the Name, Seek the Fame_KMP

    Seek the Name, Seek the Fame poj-2752 题目大意:给出一个字符串p,求所有既是p的前缀又是p的后缀的所有字符串长度,由小到大输出. 注释:$1\le strlen( ...

  4. 【BZOJ3670】【NOI2014】动物园(KMP算法)

    [BZOJ3670]动物园(KMP算法) 题面 BZOJ 题解 神TM阅读理解题 看完题目之后 想暴力: 搞个倍增数组来跳\(next\) 每次暴跳\(next\) 复杂度\(O(Tnlogn)\) ...

  5. 【bzoj3670】: [Noi2014]动物园 字符串-kmp-倍增

    [bzoj3670]: [Noi2014]动物园 一开始想的是按照kmp把fail算出来的同时就可以递推求出第i位要f次可以跳到-1 然后把从x=i开始顺着fail走,走到fail[x]*2<i ...

  6. POJ2752 Seek the Name, Seek the Fame —— KMP next数组

    题目链接:https://vjudge.net/problem/POJ-2752 Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Li ...

  7. POJ-2752 Seek the Name, Seek the Fame 字符串问题 KMP算法 求前后缀串相同数木

    题目链接:https://cn.vjudge.net/problem/POJ-2752 题意 给一个字符串,求前缀串跟后缀串相同的前缀串的个数 例:alala 输出:a, ala, alala 思路 ...

  8. poj2752

    poj2752找所有的前缀等于后缀,那就是找所有前缀等于后缀的前缀,递归再用栈存一下 #include<iostream> #include<cstdio> #include& ...

  9. POJ-2752(KMP算法+前缀数组的应用)

    Seek the Name, Seek the Fame POJ-2752 本题使用的算法还是KMP 最主要的片段就是前缀数组pi的理解,这里要求解的纸盒pi[n-1]有关,但是还是需要使用一个循环来 ...

随机推荐

  1. ionic 项目分享【转】

    写在文章前:由于最近研究ionic框架,深感这块的Demo寥寥可数,而大家又都藏私,堂堂天朝,何时才有百家争鸣之象,开源精神吾辈当仁不让! 由于昨晚找资料太匆匆 忘记出处了,记得是在http://bb ...

  2. js--小结⑤

    js中的for循环,while循环,do...while循环和C语言的一模一样 有几个问题要提醒一下的是 1.  null是对象,即object       undefined是undefined d ...

  3. SQL 建立临时表进行查询

    SELECT min (maxrank) as minofmaxrank FROM (SELECT max(rank) as maxrank FROM tbl_core_staff WHERE st_ ...

  4. 关于jQuery,$(":button") 中的冒号是什么意思?

    $(":button") 表示匹配所有的按钮.$("input:checked")表示匹配所有选中的被选中元素(复选框.单选框等,不包括select中的opti ...

  5. cas系列(三)--HTTP和HTTPS、SSL

    (这段时间打算做单点登录,因此研究了一些cas资料并作为一个系列记录下来,一来可能会帮助一些人,二来对我自己所学知识也是一个巩固.) 本文转自異次元藍客点击打开链接 1.  HTTPS HTTPS(全 ...

  6. spring配置文件中属性mappingLocations、mappingDirectoryLocations

    http://blog.csdn.net/vacblog/article/details/7774173

  7. 利用查询提示优化SQL

    数据库环境:SQL SERVER 2005 我们来看一下SQL语句及对应的数据量 SELECT COUNT(*) FROM cinvout_02 a WHERE ( a.dept_id IN ( SE ...

  8. java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹

    一.简述 zip用于压缩和解压文件.使用到的类有:ZipEntry  ZipOutputStream 二.具体实现代码 package com.joyplus.test; import java.io ...

  9. Object-C 类实现

    这篇为Object-C添加方法的后续. 这里我们应该在类的实现(.m)文件中写 #import "Photo.h" @implementation Photo - (NSStrin ...

  10. (转)iOS被开发者遗忘在角落的NSException-其实它很强大

    转载自 http://www.jianshu.com/p/05aad21e319e iOS被开发者遗忘在角落的NSException-其实它很强大 字数597 阅读968 评论4 喜欢28 NSExc ...