当前位置: 首页 > 编程日记 > 正文

hdu 2594 kmp

这个题和kmp算法的共同点,也就是可以用kmp解的原因,在于当前缀所在串(kmp中的模式串)字符pj≠后缀所在串(kmp中文本串)字符tj时,应使前缀串(kmp中模式串)尽量往右移动最大位移,而暴力算法则是每次移动位移为1。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>using namespace std;#define maxn 50005char t[maxn], p[maxn];
int next[maxn];void getNext(int *next, char *p, int size){int j=0, k=next[0]=-1;while(j<size){if(k==-1 || p[j]==p[k]) next[++j]=++k;else k=next[k];}
}int kmp(char *t, int lt, char *p, int lp){int i=0, j=0;while(i<lt && j<lp){if(j==-1 || t[i]==p[j]) i++, j++;else j=next[j];}return j;           //没找到j=0,否则j=length of common substring
}int main(){while(scanf(" %s %s", p, t)==2){int lt = strlen(t),  lp = strlen(p);char *text = lt > lp ? lt-lp+t : t;lt = min(lt, lp);getNext(next, p, lp);int k = kmp(text, lt, p, lp);if(!k) printf("0\n");else{p[k]=0;printf("%s %d\n", p, k);}}return 0;
}

Simpsons’ Hidden Talents

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2650    Accepted Submission(s): 1004


Problem Description
Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we had.
Marge: Yeah, what is it?
Homer: Take me for example. I want to find out if I have a talent in politics, OK?
Marge: OK.
Homer: So I take some politician’s name, say Clinton, and try to find the length of the longest prefix
in Clinton’s name that is a suffix in my name. That’s how close I am to being a politician like Clinton
Marge: Why on earth choose the longest prefix that is a suffix???
Homer: Well, our talents are deeply hidden within ourselves, Marge.
Marge: So how close are you?
Homer: 0!
Marge: I’m not surprised.
Homer: But you know, you must have some real math talent hidden deep in you.
Marge: How come?
Homer: Riemann and Marjorie gives 3!!!
Marge: Who the heck is Riemann?
Homer: Never mind.
Write a program that, when given strings s1 and s2, finds the longest prefix of s1 that is a suffix of s2.

Input
Input consists of two lines. The first line contains s1 and the second line contains s2. You may assume all letters are in lowercase.

Output
Output consists of a single line that contains the longest string that is a prefix of s1 and a suffix of s2, followed by the length of that prefix. If the longest such string is the empty string, then the output should be 0.
The lengths of s1 and s2 will be at most 50000.

Sample Input
clinton homer riemann marjorie

Sample Output
0 rie 3

Source
HDU 2010-05 Programming Contest

Recommend
lcy   |   We have carefully selected several similar problems for you:  1711 1686 2595 2596 2597

转载于:https://www.cnblogs.com/ramanujan/p/3737739.html

相关文章:

途游斗地主加密协议分析及破解

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 分析途游斗地主的加密协议。”作为一个手机棋牌游戏厂商&#xff0c;途游是排得上号的&#xff0c;它的途游斗地主一直很火热&#xff0c;隐约记得&#xff0c;这个厂商一直在搞斗地主的全国竞技赛事&#xff0c;并蹭上了体育总局…

URI、URL以及URN的区别

首先&#xff0c;URI&#xff0c;是uniform resource identifier&#xff0c;统一资源标识符&#xff0c;用来唯一的标识一个资源。而URL是uniform resource locator&#xff0c;统一资源定位器&#xff0c;它是一种具体的URI&#xff0c;即URL可以用来标识一个资源&#xff0c…

[转]使用设计模式改善程序结构(二)

使用设计模式改善程序结构&#xff08;二&#xff09; 在本系列的 第一篇文章中&#xff0c;描述了如何通过设计模式来指导我们的程序重构过程&#xff0c;并且着重介绍了设计模式意图、动机的重要性。在本文中我们将继续上篇文章进行讨论&#xff0c;这次主要着重于设计模式的…

iOS arm 64 的了解

ARM 简介&#xff1a;ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine。百度介绍 iOS设备中的处理器都是基于ARM架构的。 arm设备真机i386&#xff08;iphone5,iphone5s以下的模拟器&#xff09;x86_64(iphone6以上的模拟器…

wireshark和tcpdump抓包TCP乱序和重传怎么办?PCAP TCP排序工具分享

点击上方↑↑↑蓝字[协议分析与还原]关注我们 “ 介绍TCP排序方法&#xff0c;分享一个Windows版的TCP排序工具。” 在分析协议的过程中&#xff0c;不可避免地需要抓包。 无论抓包条件如何优越&#xff0c;无论Windows下使用wireshark还是Linux下使用tcpdump&#xff0c;无论是…

USACO JANUARY——矩形[rects]

Description 给出N个矩形(1≤N≤100)和它的长和宽(不超过1000)&#xff0c;写一个程序找出最大的K&#xff0c;使得有K个矩形满足层层包含的关系&#xff0c;即里层的矩形被所有外层的矩形包含&#xff0e;一个矩形P1包含另一个矩形P2&#xff0c;则P2的一边小于P1的一边&#…

ORACLE分页SQL

ORACLE分页SQL 1&#xff0c;使用rownum SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM < 40 ) WHERE RN > 21 2&#xff0c;使用between SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A ) W…

01-基本概念

GCD 1 基本概念 概念&#xff1a; 是 Apple 开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。它是一个在线程池模式的基础上执行的并发任务 优点 多核并行运算不需要手动管理线程生命周期自动利用CPU的内核 两个基本点…

cocos2d游戏jsc文件格式解密,SpideMonkey大冒险

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 介绍cocos2d游戏中常用的jsc格式文件的解密。” 01 — 在破解游戏应用中&#xff0c;经常会碰到后缀为jsc的文件&#xff0c;这是基于cocos2d开发的游戏的加密代码&#xff0c;本质上是js文件&#xff0c;只是被加密了。 例如之前…

02-dispatch_barrier

1 dispatch_barrier_async 概念 栅栏方法&#xff0c;暂时的将一部操作做成一个同步操作&#xff0c;向一个栅栏一样的分开 dispatch_barrier_async函数的作用是在进程管理中起到一个栅栏的作用,它等待所有位于barrier函数之前的操作执行完毕后执行,并且在barrier函数执行之后…

sqljdbc.jar 和 sqljdbc4.jar

从微软官网下载的Sql server2008的JDBC jar包&#xff0c;解压后里面有两个jar包&#xff08;sqljdbc.jar 和 sqljdbc4.jar&#xff09;。到底应该用哪个呢&#xff1f; 地址&#xff1a; http://www.microsoft.com/downloads/details.aspx?FamilyIDa737000d-68d0-4531-b65d-d…

综合性深入的技术文章-20161103

已读文章&#xff1a; SqlServer性能检测和优化工具使用详细 百万级访问网站前期的技术准备 从100PV到1亿级PV网站架构演变 待阅读&#xff1a; 从0到千万级访问量网站架构演变史 memcached全面剖析–5. memcached的应用和兼容程序 PHP解决网站大流量与高并发 NGINX防御CC攻击教…

头条小视频和西瓜视频signature签名算法

点击上方↑↑↑蓝字[协议分析与还原]关注我们“分析今日头条内小视频和西瓜视频分享后浏览器打开所用的signature签名算法。” 上月写的一篇关于使用微信的wxid加好友的文章&#xff0c;竟然无意间碰到了一个微信搜索黑洞&#xff0c;成就了本号有史以来搜索量、阅读量、关注度…

一个winform带你玩转rabbitMQ

源码已放出 https://github.com/dubing/MaoyaRabbit 本章分3部分 一、安装部署初探 二、进阶 三、api相关 安装 部署 初探 先上图 一. 安装部署 下载 rabbitMQ &#xff1a;http://www.rabbitmq.com/download.html 安装rabbitmq需要erlang&#xff0c;下载erlang&#xff1a;ht…

03-dispatch_after

1 dispatch_after 概念 在指定时间之后将任务追加到主队列中。严格来说&#xff0c;这个时间并不是绝对准确的&#xff0c;但想要大致延迟执行任务&#xff0c;dispatch_after函数是很有效的。 NSLog("currentThread---%",[NSThread currentThread]); // 打印当前线…

C#模糊查询绑定datagridview

private CollectionViewSource wgdData new CollectionViewSource(); private DataTable Ds_wgd { get { return this.dgv_wgd.ItemsSource as DataTable; } set { wgdData.Source value; this.dgv_wgd.ItemsSource ((DataTable)wgdData.Source).DefaultView; } } //文本框修…

今日头条反爬措施形同虚设,论多平台协同在安全方面的重要性

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 玩头条练技能。”大家好&#xff0c;看到标题一定猜到了&#xff0c;我又来玩今日头条了&#xff0c;谁让它是东半球文明的杀时间神器呢。 想当年&#xff0c;头条刚问世&#xff0c;正愁长辈看新闻没合适且方便的工具&#xff0…

ueditor编辑器和at.js集成

源码&#xff1a; <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <%//禁止jsp解析${} %> <% page isELIgnored"true"%> <%String path request.getContextPath();String basePath reques…

Java缓存学习之五:spring 对缓存的支持

&#xff08;注意标题&#xff0c;Spring对缓存的支持 这里不单单指Ehcache &#xff09;   从3.1开始&#xff0c;Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的&#xff0c;其核心思想是这样的&#xff1a;当…

04-dispatch_group

dispatch_group 实现线程同步 比如说&#xff0c;第一步我想先下载三张图片&#xff0c;然后第二步再去主线程刷新imgview 显示图片。 利用dispatch_group 来进行实现 &#xff0c;简单来讲就四行代码. 就可以让代码按照你想要的顺序进行发生。 使用步骤 创建一个dispatch_g…

fiddler教程:抓包带锁的怎么办?HTTPS抓包介绍。

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 介绍Fiddler的HTTPS抓包功能。” 这里首先回答下标题中的疑问&#xff0c;fiddler抓包带锁的原因是HTTPS流量抓包功能开启&#xff0c;但解密功能未开启导致&#xff0c;只需要将HTTPS流量解密功能开启就能解决问题。01—作为一款…

如何实现后台向前台传数据

技术交流群&#xff1a;233513714 这两天正在研究如何让后天主动向前台展现数据&#xff0c;只要后台有数据上传的时候就向前台上传(因为公司有个项目&#xff0c;硬件设备会不断的上传数据&#xff0c;服务端将接收到的数据向前台展示)。在网上查了一下&#xff0c;下面将介绍…

05-dispatch_semphore

dispatch_semphore 信号量 dispatch_semaphore信号量为基于计数器的一种多线程同步机制。如果semaphore计数大于等于1&#xff0c;计数-1&#xff0c;返回&#xff0c;程序继续运行。如果计数为0&#xff0c;则等待。dispatch_semaphore_signal(semaphore)为计数1操作,dispatc…

[leetcode]_Integer to Roman

题目&#xff1a;对应之前那道将罗马数字转换整型数字的题目。反过来。 思路&#xff1a;刚开始做的时候&#xff0c;想着用程序进行判断&#xff0c;复杂的要死。网络了别人代码&#xff0c;非常清晰。 代码&#xff1a; 1 public String intToRoman(int num) {2 S…

fiddler使用技巧进阶,如何抓包修改数据?——AutoResponder重定向

“ 介绍Fiddler的AutoResponder重定向功能。” Fiddler功能十分强大&#xff0c;既能抓取报文&#xff0c;也能构造报文&#xff0c;本文继续介绍fiddler的功能&#xff0c;这次的功能与构造报文相关&#xff0c;用来回答标题中的疑问&#xff0c;即修改数据的方法&#xff0c;…

nginx基于IP的虚拟主机

知识点&#xff1a; server的语法&#xff1a; upstream语法&#xff1a; upstream中192.168.100.1不是ip只是个标识&#xff0c;只要和下面的proxy_pass 对应即可。 基于IP的虚拟主机&#xff1a; listen和server_name中多加上端口也没问题 listen可以监听在虚拟ip上面 代码&a…

读《人月神话》所感

《人月神话》 读书心得&#xff1a;因为现在还是学生&#xff0c;且没有什么真正在应用项目的开发经验&#xff0c;所以读《人月神话》这本书&#xff0c;与其说是在学习这位计算机先驱的经验&#xff0c;不如说是在了解一个大型软件系统的开发过程以及在开发过程中将会遇到的…

Android逆向之调试smali代码基础

点击上方↑↑↑蓝字[协议分析与还原]关注我们 “ 介绍Android逆向中调试smali代码的方法。” 最近在重整Android逆向分析环境&#xff0c;一切都在从零开始&#xff0c;做下记录&#xff0c;给大家分享。 本文介绍Android逆向中smali代码的调试及环境的准备。 事先准备如下工具…

Python之路【第五篇】:面向对象及相关

Python之路【第五篇】&#xff1a;面向对象及相关 Python之路【第五篇】&#xff1a;面向对象及相关 面向对象基础 基础内容介绍详见一下两篇博文&#xff1a; 面向对象初级篇面向对象进阶篇其他相关 一、isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 123456class Foo…

关于安卓版的eclipse连接数据库并誓言增删改查

在安卓环境下连接数据库下面是主要代码极其作用&#xff1a; 1.编写 The Class类把课程表courses.db当做一个实体类&#xff0c;hashcode和equals这两个类是为了判断输入的查询内容和Excel表中的内容是否一致。 并在java里面区别两个对象是否一致 1 public class TheClass {2 …