洛谷:P2957 [USACO09OCT] Barn Echoes G

题目描述

The cows enjoy mooing at the barn because their moos echo back, although sometimes not completely. Bessie, ever the excellent

secretary, has been recording the exact wording of the moo as it goes out and returns. She is curious as to just how much overlap there is.

Given two lines of input (letters from the set a..z, total length in the range 1..80), each of which has the wording of a moo on it, determine the greatest number of characters of overlap between one string and the other. A string is an overlap between two other strings if it is a prefix of one string and a suffix of the other string.

By way of example, consider two moos:

moyooyoxyzooo

yzoooqyasdfljkamo

The last part of the first string overlaps 'yzooo' with the first part of the second string. The last part of the second string

overlaps 'mo' with the first part of the first string. The largest overlap is 'yzooo' whose length is 5.

POINTS: 50

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

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

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

moyooyoxyzooo

yzoooqyasdfljkamo

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

输入格式

* Lines 1..2: Each line has the text of a moo or its echo

输出格式

* Line 1: A single line with a single integer that is the length of the longest overlap between the front of one string and end of the other.

输入输出样例

输入 #1复制

abcxxxxabcxabcd 
abcdxabcxxxxabcx 

输出 #1复制

11 

说明/提示

'abcxxxxabcx' is a prefix of the first string and a suffix of the second string.

学过哈希字符串就直接套模板就行了,虽然我因为一个小细节WA了无数次

#include<iostream>
#include<cstring>
using namespace std;
const int N = 1e5+3, P = 131;  //为什么是131,可以学一手字符串哈希
typedef unsigned long long UUL;
UUL e1[N], e2[N], p[N];
char str1[100], str2[100];
int a, b, len1, len2, res;
UUL get(int l,int r,UUL e[])
{return e[r] - e[l - 1] * p[r - l + 1];  //返回区间的字符串,前缀和
}
int main()
{cin >> str1 +1 >> str2+1; p[0] = 1;for (int i = 1; str1[i]; i++) {e1[i] = e1[i - 1] * P + str1[i];  //把字符串看成二进制求前缀和}for (int i = 1; str2[i]; i++){e2[i] = e2[i - 1] * P + str2[i];  //把字符串看成二进制求前缀和}for (int i = 1; str1[i] || str2[i]; i++){p[i] = p[i - 1] * P;     //计算进位}len1 = strlen(str1+1);len2 = strlen(str2+1);for(int i =1; str1[i] || str2[i];i++){int a1, b1;if (len1 < i || len2 < i) break;//判断边界if (get(1, i, e1) == get(len2 - i + 1, len2, e2)) //如果子串相等,此时i就是这个字串的长度a1 = i;elsea1 = -1;  //当他们不相等时,就结束计算,这里一定要结束计数if (get(len1 - i + 1, len1, e1) == get(1, i, e2))  //如果子串相等,此时i就是这个字串的长度b1 = i;elseb1 = -1;   res = max(res, max(a1, b1));//求最大值}cout << res << endl;return 0;
}

可以看另一篇博客字符串哈希

详情请看字符串哈希

算法小白的刷题日记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/670134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

普通人应该如何使用GPT

现在GPT4推出的GPTs&#xff0c;包含了各个行业方向&#xff0c;比如DALL&#xff08;绘图&#xff09;、Diagrams&#xff08;图标、流程图&#xff09;、KAYAK&#xff08;航旅助手&#xff09;、Murder Mystery Mayhem&#xff08;侦探扮演&#xff09;、Canva&#xff08;设…

C语言-4

排序算法简介 /*学习内容&#xff1a;冒泡排序&#xff08;最基本的排序方法&#xff09;选择排序&#xff08;冒泡的优化&#xff09;插入排序&#xff08;在合适的位置插入合适的数据&#xff09; *//*排序分类&#xff1a;1.内部排序待需要进行排序的数据全部存放到内存中&…

为什么SpringBoot胖Jar不好

公平地说&#xff0c;我有时会怀念 JavaEE 流行的日子。 当然&#xff0c;当时的情况很复杂&#xff0c;但整个 JavaEE 平台设计合理&#xff0c;符合企业开发的需要。 我可以很轻松地将当时的 JavaEE 应用服务器与现代 Kubernetes 架构进行比较&#xff0c;后者现在也有同样…

2024-02-04 混用 C 与 C++ 的 calloc 和 new 导致的问题

点击 <C 语言编程核心突破> 快速C语言入门 混用 C 与 C 的 calloc 和 new 导致的问题 前言一、问题代码二、使用new总结 前言 要解决问题: 同样的代码, 含有std::string的结构, 在gcc环境通过calloc可以赋值, 但是在VS下不行 想到的思路: std::string不是平凡类, 按道…

[职场] C++开发工程师的岗位职责 #学习方法#笔记

C开发工程师的岗位职责 C开发工程师是利用C语言设计完成软件系统底层模块功能&#xff1b;测试软件模块和软集成产品&#xff0c;进行软件故障的诊断、定位、分析和调试&#xff0c;实施产品测试方案&#xff1b;向业务部门提供软件的后期技术支持。C开发工程师是负责使用C编程…

知识融合前沿技术:构建多模态、公平高效的大规模知识表示

目录 前言1 无监督对齐&#xff1a;构建智能实体关联2 多视角嵌入&#xff1a;提高数据利用效率3 嵌入表示增强&#xff1a;挑战节点相似性&#xff0c;对抗训练解决4 大规模实体对齐&#xff1a;克服模糊性和异构性结论 前言 在信息时代&#xff0c;知识融合成为推动人工智能…

全链游戏的未来趋势与Bridge Champ的创新之路

为了充分探索全链游戏的特点和趋势&#xff0c;以及Bridge Champ如何作为一个创新案例融入这一发展脉络&#xff0c;我们需要深入了解这两者之间的互动和相互影响。全链游戏&#xff0c;或完全基于区块链的游戏&#xff0c;代表了游戏行业的一个重要转型&#xff0c;它们利用区…

kafka-splunk数据通路实践

目的&#xff1a; 鉴于目前网络上没有完整的kafka数据投递至splunk教程&#xff0c;通过本文操作步骤&#xff0c;您将实现kafka数据投递至splunk日志系统 实现思路&#xff1a; 创建kafka集群部署splunk&#xff0c;设置HTTP事件收集器部署connector服务创建connector任务&a…

re:从0开始的CSS学习之路 1. CSS语法规则

0. 写在前面 现在大模型卷的飞起&#xff0c;感觉做页面的活可能以后就不需要人来做了&#xff0c;不知道现在还有没有学前端的必要。。。 1. HTML和CSS结合的三种方式 在HTML中&#xff0c;我们强调HTML并不关心显示样式&#xff0c;样式是CSS的工作&#xff0c;现在就轮到C…

6、基于机器学习的预测

应用机器学习的任何预测任务与这四个策略。 文章目录 1、简介1.1定义预测任务1.2准备预测数据1.3多步预测策略1.3.1多输出模型1.3.2直接策略1.3.3递归策略1.3.4DirRec 策略2、流感趋势示例2.1多输出模型2.2直接策略1、简介 在第二课和第三课中,我们将预测视为一个简单的回归问…

EMNLP 2023精选:Text-to-SQL任务的前沿进展(上篇)——正会论文解读

导语 本文记录了今年的自然语言处理国际顶级会议EMNLP 2023中接收的所有与Text-to-SQL相关&#xff08;通过搜索标题关键词查找得到&#xff0c;可能不全&#xff09;的论文&#xff0c;共计12篇&#xff0c;包含5篇正会论文和7篇Findings论文&#xff0c;以下是对这些论文的略…

Redis(三)主从架构、Redis哨兵架构、Redis集群方案对比、Redis高可用集群搭建、Redis高可用集群之水平扩展

转自 极客时间 Redis主从架构 redis主从架构搭建&#xff0c;配置从节点步骤&#xff1a; 1、复制一份redis.conf文件2、将相关配置修改为如下值&#xff1a; port 6380 pidfile /var/run/redis_6380.pid # 把pid进程号写入pidfile配置的文件 logfile "6380.log" …

FPGA解码MIPI视频:Xilinx Artix7-35T低端FPGA,基于MIPI CSI-2 RX Subsystem架构实现,提供工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的 MIPI 编解码方案本方案在Xilinx Artix7-100T上解码MIPI视频的应用本方案在Xilinx Kintex7上解码MIPI视频的应用本方案在Xilinx Zynq7000上解码MIPI视频的应用本方案在Xilinx Zynq UltraScale上解码MIPI视频的应用纯VHDL代码解…

验证码倒计时:用户界面的小细节,大智慧

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 验证码倒计时&#xff1a;用户界面的小细节&#xff0c;大智慧 前言为什么需要验证码倒计时防止滥用&#xff1a;用户心理&#xff1a; 设计考量可见性&#xff1a;友好性&#xff1a;适应性&#xff…

打开/关闭请求回显功能的echo命令

echo命令可用来显示或隐藏DOS状态屏幕显示的内容。在*.bat文件第一行加上echo off&#xff0c;以后的屏幕输出命令&#xff08;包括其他命令产生的提示&#xff09;都会消失&#xff0c;比如在echo off的下一行使用dir&#xff0c;结果是光标原地闪烁&#xff0c;屏幕无显示。使…

安装PyInstaller的保姆级教程

一、安装PyInstaller之前首先要安装Python&#xff0c;小编这里安装的是Python3.9&#xff0c;目前&#xff08;2024/2/6&#xff09;匹配到的最高版本的PyInstaller的版本为6.3.0。需要安装Python的小伙伴可以去这里安装python详细步骤&#xff08;超详细&#xff0c;保姆级&a…

JavaScript运行机制

在web前端开发中&#xff0c;JavaScript无疑是一种非常重要的编程语言。它能够为网页添加动态交互功能&#xff0c;提升用户体验。然而&#xff0c;要充分发挥JavaScript的威力&#xff0c;我们需要对它的运行机制有一定的了解。 JavaScript是一种解释执行的脚本语言&#xff…

SpringCloud-搭建Nacos服务中心

Nacos 是一个开源的动态服务发现、配置管理和服务管理平台。它支持多种服务发现协议&#xff0c;包括基于 DNS 和 HTTP 的服务发现。Nacos 提供了强大的配置管理和服务发现功能&#xff0c;使得在微服务架构中轻松实现服务注册、发现和配置管理成为可能。在本篇博客中&#xff…

【Web】小白也能看懂的BeginCTF个人wp(全)

纯萌新&#xff0c;贴出自己的wp&#xff0c;一起交流学习QWQ 目录 zupload zupload-pro zupload-pro-plus zupload-pro-plus-max zupload-pro-plus-max-ultra zupload-pro-plus-max-ultra-premium zupload-pro-revenge zupload-pro-plus-enhanced POPgadget sql教…

09_树莓派_树莓派外设板_GPIO_按键的中断与消抖

目录 1.树莓派外设集成板总体介绍 2.第一部分 按键矩阵 GPIO_按键与中断 3.实现效果 1.树莓派外设集成板总体介绍 1&#xff09;前言&#xff1a;这是一块为了验证树莓派【兼容树莓派多个型号】的40pins的外设接口的外接板&#xff0c;告别复杂的面包板外设搭建。【欢迎各位…