3409: [Usaco2009 Oct]Barn Echoes 牛棚回声

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 57  Solved: 47
[Submit][Status][Discuss]

Description

奶牛们灰常享受在牛栏中哞叫,因为她们可以听到她们哞声的回音。虽然有时候并不能完全听到完整的回音。Bessie曾经是一个出色的秘书,所以她精确地纪录了所有的哞叫声及其回声。她很好奇到底两个声音的重复部份有多长。

输入两个字符串(长度为1到80个字母),表示两个哞叫声。你要确定最长的重复部份的长度。两个字符串的重复部份指的是同时是一个字符串的前缀和另一个字符串的后缀的字符串。

我们通过一个例子来理解题目。考虑下面的两个哞声:

    moyooyoxyzooo
yzoooqyasdfljkamo

第一个串的最后的部份"yzooo"跟第二个串的第一部份重复。第二个串的最后的部份"mo"跟第一个串的第一部份重复。所以"yzooo"跟"mo"都是这2个串的重复部份。其中,"yzooo"比较长,所以最长的重复部份的长度就是5。

Input

两行: 每一行是1个字符串表示奶牛的哞声或它的回声。

Output

第一行: 包含一个单独的整数表示输入的2个字符串中,一个字符串的前缀和另一个字符串的后缀的最长的重复部份的长度。

Sample Input

abcxxxxabcxabcd
abcdxabcxxxxabcx

Sample Output

11

"abcxxxxabcx"是第一个字符串的前缀和第二个字符串的后缀。

HINT

 

Source

Gold

题解:不知道bzoj啥时候冒出来一堆普及组的题目QAQ

要是想A的话太容易了,所以还是瞎搞搞来连连脑洞吧

方法一:直接\( O\left({N}^{2} \right) \)瞎搞。。。(PS:不要问我为啥只有一层循环,事实上copy的复杂度是O(N)的)

 /**************************************************************
Problem:
User: HansBug
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ var
i,j,k,l,m,n:longint;
s1,s2,s3:ansistring;
function max(x,y:longint):longint;
begin
if x>y then max:=x else max:=y;
end;
begin
readln(s1);
readln(s2);l:=;
for i:=max(length(s2)-length(s1)+,) to length(s2) do
begin
s3:=copy(s2,i,length(s2)+-i);
if copy(s1,,length(s2)+-i)=s3 then
begin
l:=length(s2)+-i;
break;
end;
end;
for i:=max(length(s1)-length(s2)+,) to length(s1) do
begin
s3:=copy(s1,i,length(s1)+-i);
if copy(s2,,length(s1)+-i)=s3 then
begin
l:=max(l,length(s1)+-i);
break;
end;
end;
writeln(l);
readln;
end.

方法二:这是我第一反应的做法(但是N<=80是什么节奏= =)——字符串哈希(哈希大法好OTL),于是瞎搞搞,很基础的。。。(本人实测N<=3000000都能1s内出来)

 /**************************************************************
Problem:
User: HansBug
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ const p=;q=;
var
i,j,k,l,m,n,x0,y0,x,y:longint;
list,a,b:array[..,..] of int64;
s1,s2:ansistring;
function max(x,y:longint):longint;
begin
if x>y then max:=x else max:=y;
end; begin
list[,]:=;list[,]:=;
readln(s1);
readln(s2);l:=;
n:=max(length(s1),length(s2))+;
for i:= to n do
begin
list[i,]:=(list[i-,]*p) mod q;
list[i,]:=(list[i-,]*q) mod p;
end;
a[,]:=;a[,]:=;
for i:= to length(s1) do
begin
a[i,]:=(a[i-,]+(list[i,]*ord(s1[i])) mod q) mod q;
a[i,]:=(a[i-,]+(list[i,]*ord(s1[i])) mod p) mod p;
end;
b[,]:=;b[,]:=;
for i:= to length(s2) do
begin
b[i,]:=(b[i-,]+(list[i,]*ord(s2[i])) mod q) mod q;
b[i,]:=(b[i-,]+(list[i,]*ord(s2[i])) mod p) mod p;
end;
for i:=max(,length(s1)-length(s2)+) to length(s1) do
begin
j:=length(s1)-i+;
x:=(list[i-,]*b[j,]) mod q;
y:=(list[i-,]*b[j,]) mod p;
x0:=((a[length(s1),]-a[i-,]) mod q+q) mod q;
y0:=((a[length(s1),]-a[i-,]) mod p+p) mod p;
if (x=x0) and (y=y0) then
begin
l:=j;
break;
end;
end;
for i:=max(,length(s2)-length(s1)+) to length(s2) do
begin
j:=length(s2)-i+;
x:=(list[i-,]*a[j,]) mod q;
y:=(list[i-,]*a[j,]) mod p;
x0:=((b[length(s2),]-b[i-,]) mod q+q) mod q;
y0:=((b[length(s2),]-b[i-,]) mod p+p) mod p;
if (x=x0) and (y=y0) then
begin
l:=max(j,l);
break;
end;
end;
writeln(l);
readln;
end.

3409: [Usaco2009 Oct]Barn Echoes 牛棚回声的更多相关文章

  1. BZOJ 3408: [Usaco2009 Oct]Heat Wave 热浪( 最短路 )

    普通的最短路...dijkstra水过.. ------------------------------------------------------------------------------ ...

  2. BZOJ 3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题( dp )

    01背包... ----------------------------------------------------------------------- #include<cstdio&g ...

  3. 3406: [Usaco2009 Oct]Invasion of the Milkweed 乳草的入侵

    3406: [Usaco2009 Oct]Invasion of the Milkweed 乳草的入侵 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 8 ...

  4. 3408: [Usaco2009 Oct]Heat Wave 热浪

    3408: [Usaco2009 Oct]Heat Wave 热浪 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 67  Solved: 55[Subm ...

  5. 3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题

    3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit:  ...

  6. 洛谷 2957 [USACO09OCT]谷仓里的回声Barn Echoes

    题目描述 The cows enjoy mooing at the barn because their moos echo back, although sometimes not complete ...

  7. 洛谷——P2957 [USACO09OCT]谷仓里的回声Barn Echoes

    https://www.luogu.org/problem/show?pid=2957 题目描述 The cows enjoy mooing at the barn because their moo ...

  8. [USACO09OCT]谷仓里的回声Barn Echoes(hush、STL)

    https://www.luogu.org/problem/P2957 题目描述 The cows enjoy mooing at the barn because their moos echo b ...

  9. [luoguP2957] [USACO09OCT]谷仓里的回声Barn Echoes(Hash)

    传送门 团队里的hash水题,数据小的不用hash都能过.. 也就是前缀hash,后缀hash,再比较一下就行. ——代码 #include <cstdio> #include <c ...

随机推荐

  1. MySQL生产库全库备份脚本

    创建一个单独的备份用户backup,不要用root 创建备份目录 :mkdir -p /databackup/fullbackup mysql> grant SELECT,RELOAD,SHOW ...

  2. 批量转换引擎为innodb

    [root@HE1 ~]# catconvert_Storage_Engine.sh #/bin/bash #FileName:Convert_Storage_Engine.sh #Desc:Conv ...

  3. 如何去掉Atom的右键菜单?

    Win+R -- regedit -- Ctrl+F -- 搜索"Atom"(或者直接"Open with Atom") -- 找到有个值为Open with ...

  4. KVO,看我就够了!

    概述 KVO全称Key-Value-Observing,也叫键值监听,是一种观察者设计模式.提供了一种机制,当指定的对象的属性被修改后,对象就会收到一个通知.也就是说每次指定的被观察的对象的属性被修改 ...

  5. MySQL 存储表情字符

    摘要 在 MySQL 中直接存储表情的时候,会出现无法插入数据的错误. 这是由于一般情况下,MySQL 的字符集是 utf8,而对于 emoji 表情的 mysql 的 utf8 字符集是不支持,需要 ...

  6. 未来手机Alo即将问世!全息投影手机的新高峰!全息3d 网

    文章来源:网络         编辑:大熊 [摘要]全息投影手机很早就开始炒,网络上的概念机也是丛出不穷,那么这款出自法国的概念机又是多么的奇葩?全息 3d 网带你一探究竟. 据外媒报道,在不久将来语 ...

  7. Python学习--20 Web开发

    HTTP格式 HTTP协议是基于TCP和IP协议的.HTTP协议是一种文本协议. 每个HTTP请求和响应都遵循相同的格式,一个HTTP包含Header和Body两部分,其中Body是可选的. HTTP ...

  8. Struts2系列笔记(4)---Ation类访问servlet

    Ation类访问servlet Ation类有三种方式servlet: (1)间接的方式访问Servlet API  ---使用ActionContext对象 (2)  实现接口,访问Action时完 ...

  9. 微信公众号开发总结(Node.js + express + winston)

    关于订阅号.服务号.企业号 官方定位 订阅号:主要偏于为用户传达资讯(类似报纸杂志),认证后每天可以群发一条消息,可达到宣传效果,构建与读者之间更好的沟通和管理模式. 服务号:主要偏于服务交互(类似银 ...

  10. C# 总结const、 readonly、 static三者区别:

    总结const. readonly. static三者区别: (有人问我,看似简单,我也没能立刻回答出来,总结一下,分享一下.) const:静态常量,也称编译时常量(compile-time con ...