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. leetcode难度及面试频率

    转载自:LeetCode Question Difficulty Distribution                 1 Two Sum 2 5 array sort           set ...

  2. 搭建Node.js开发IDE环境WebStrom5 多图

    1.下载前期准备 node.js下载地址 http://nodejs.org/ WebStrom5下载地址: http://download-ln.jetbrains.com/webide/WebSt ...

  3. 蓝桥杯java试题《洗牌》

    问题描述 小弱T在闲暇的时候会和室友打扑克,输的人就要负责洗牌.虽然小弱T不怎么会洗牌,但是他却总是输. 渐渐地小弱T发现了一个规律:只要自己洗牌,自己就一定会输.所以小弱T认为自己洗牌不够均匀,就独 ...

  4. UWP 律师信息 MVVM 2.0版本

    由于1.0版本存在一个很大的BUG,一直也没有找到问题所在,后来,一位在微软的朋友说,他们的测试小妹给出的结果是框架的问题,所以,就直接整体重构了代码,也布局设计上,由跳转页面变为了UWP常见的左侧列 ...

  5. java原装代码完成pdf在线预览和pdf打印及下载

    这是我在工作中,遇到这样需求,完成需求后,总结的成果,就当做是工作笔记,以免日后忘记,当然,能帮助到别人是最好的啦! 下面进入正题: 前提准备: 1. 项目中至少需要引入的jar包,注意版本: a)  ...

  6. 《InsideUE4》UObject(四)类型系统代码生成

    你想要啊?想要你就说出来嘛,你不说我怎么知道你想要呢? 引言 上文讲到了UE的类型系统结构,以及UHT分析源码的一些宏标记设定.在已经进行了类型系统整体的设计之后,本文将开始讨论接下来的步骤.暂时不讨 ...

  7. c#入门系列——基础篇

    c#与VB的区别 刚接触c#发现c#与vb还是有所不同的--它可以在控制台显示.它比vb多出来了一些东西.代码规范上跟VB也稍有不同.....暂时就发现这么多,正在努力发现中. c#的代码结构     ...

  8. java-6数组

    一. 请编写一个程序将一个整数转换为汉字读法字符串.比如"1123"转换为"一千一百二十三".更进一步,能否将数字表示的金额改为"汉字表达?比如将&q ...

  9. 【译文】什么是Docker

    What is Docker? By Tim Butler • 14 May 2015 • https://www.conetix.com.au/blog/what-is-docker Unless ...

  10. Visual Studio 2017 离线安装方式

    Visual Studio, 特别是Visual Studio 2017 通常是一个在线安装程序,如果你在安装过程中失去连接,你可以遇到问题.但是,由于法律原因,微软没有提供完整的可下载的ISO镜像. ...