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. 天兔(Lepus)监控系统慢查询分析平台安装配置

    被监控端要安装pt工具 [root@HE1~]## yum -y install perl-IO-Socket-SSL [root@HE1~]## yum -y install perl-DBI [r ...

  2. 支付宝开发中return_url和notify_url的区别分析

    在处理支付宝业务中出现过这样的问题,付费完成后,在支付宝跳转到商家指定页面时,订单状态已经更新,通过调试发现是支付宝先通知notify_url,完成了订单状态. 支付宝return_url和notif ...

  3. margin三个值

    http://www.cnblogs.com/wangkongming/p/3204734.html margin标记可以带一个.二个.三个.四个参数,各有不同的含义. margin: 20px;(上 ...

  4. 使用net Manager工具远程连接oracle

    一,在服务端配置oracle端口 在命令行中输入netca命令,打开相关配置默认端口号为1521 二,配置端口后使用Telnet工具调试端口是否联通 在命令行输入telnet 服务器ip 端口号 三, ...

  5. gulp源码解析(三)—— 任务管理

    上篇文章我们分别对 gulp 的 .src 和 .dest 两个主要接口做了分析,今天打算把剩下的面纱一起揭开 —— 解析 gulp.task 的源码,了解在 gulp4.0 中是如何管理.处理任务的 ...

  6. PHP面向对象(OOP)----分页类

    > 同验证码类,分页也是在个人博客,论坛等网站中不可缺少的方式,通过分页可以在一个界面展示固定条数的数据,而不至于将所有数据全部罗列到一起,实现分页的原理其实就是对数据库查询输出加了一个limi ...

  7. 下一个项目为什么要用 SLF4J

    阿里巴巴 Java 开发手册 前几天阿里巴巴在云栖社区首次公开阿里官方Java代码规范标准,就是一个PDF手册,有命名规范,让你知道自己原来取的每一个类名.变量名都是烂名字,真替你家未来孩子担心:有集 ...

  8. MongoDB学习总结(三) —— 常用聚合函数

    上一篇介绍了MongoDB增删改查命令的基本用法,这一篇来学习一下MongoDB的一些基本聚合函数. 下面我们直奔主题,用简单的实例依次介绍一下. > count() 函数 集合的count函数 ...

  9. 读书笔记 effective c++ Item 12 拷贝对象的所有部分

    1.默认构造函数介绍 在设计良好的面向对象系统中,会将对象的内部进行封装,只有两个函数可以拷贝对象:这两个函数分别叫做拷贝构造函数和拷贝赋值运算符.我们把这两个函数统一叫做拷贝函数.从Item5中,我 ...

  10. linux下安装Mysql 以及导入数据库

    1.下载mysql的rpm包,创建一个文件夹例如software来放置下面文件 可以通过wget下载具体的地址 (1)MySQL-server-5.6.10-1.rhel5.x86_64.rpm:My ...