poj 4468Spy(kmp算法)

Spy

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

Problem Description
“Be subtle! Be subtle! And use your spies for every kind of business. ”
— Sun Tzu
“A spy with insufficient ability really sucks”
— An anonymous general who lost the war
You, a general, following Sun Tzu’s instruction, make heavy use of spies and agents to gain information secretly in order to win the war (and return home to get married, what a flag you set up). However, the so-called “secret message” brought back by your spy, is in fact encrypted, forcing yourself into making deep study of message encryption employed by your enemy.
Finally you found how your enemy encrypts message. The original message, namely s, consists of lowercase Latin alphabets. Then the following steps would be taken:
* Step 1: Let r = s
* Step 2: Remove r’s suffix (may be empty) whose length is less than length of s and append s to r. More precisely, firstly donate r[1...n], s[1...m], then an integer i is chosen, satisfying i ≤ n, n - i < m, and we make our new r = r[1...i] + s[1...m]. This step might be taken for several times or not be taken at all.
What your spy brought back is the encrypted message r, you should solve for the minimal possible length of s (which is enough for your tactical actions).

 

Input
There are several test cases.
For each test case there is a single line containing only one string r (The length of r does not exceed 10 5). You may assume that the input contains no more than 2 × 10 6 characters.
Input is terminated by EOF.

 

Output
For each test case, output one line “Case X: Y” where X is the test case number (starting from 1) and Y is the desired answer.

 

Sample Input
abc aab abcadabcabcad aaabbbaaaabbbaa abcababcd

 

Sample Output
Case 1: 3 Case 2: 2 Case 3: 5 Case 4: 6 Case 5: 4

 

Source
2012 Asia Chengdu Regional Contest

第一次做这种题也是第一次接触kmp算法,感觉很糟糕,这个题有好多不懂的地方,看着解题报告写的,写完了提交78ms,看人家的好多31ms,想自己优化一下,改了半天还是78ms,可能还是因为没有真正理解它吧,不过以后还会继续看的,继续练习,总会学会的

说一下题意,我觉得这个题目还挺难理解的,可能是英语太差了,连着看了好多解题报告才把题目搞懂,悲催。。。定义串B是由串A的若干前缀加在一起再加上串A本身构成的。现在给出串B,求串A的最小长度。我解释一下这个若干前缀的意思,比如A串为abcdef,a、ab、abc、abcd等都可以说是A的前缀,也就是从前往后的某一段字符串

 

#include<stdio.h>
#include<string.h>
char s[100050],c[100050];
int next[100050],n,cn;void match()
{int i,j=0,tem,k,a;for(i=1;i<=n;i++){while(j&&c[j+1]!=s[i])j=next[j];if(s[i]==c[j+1])j++;if(j==0){for(k=tem;k<=i;k++){c[++cn]=s[k];a=cn;if(c[a]==c[next[a-1]+1])next[a]=next[a-1]+1;}tem=i+1;}}else if(j==cn)tem=i+1;//记录当前s位置的下一个位置}cn+=n-tem+1;
}int main()
{int i,j,cas=1;while(scanf("%s",s+1)!=EOF){n=strlen(s+1);memset(c,0,sizeof(c));memset(next,0,sizeof(next));c[1]=s[1];cn=1;match();printf("Case %d: %d\n",cas++,cn);}return 0;
}


 

 

转载于:https://www.cnblogs.com/xinyuyuanm/p/3212005.html

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

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

相关文章

mysql 64位下载 win7_关于Win7 64位 mysql 5.7下载安装问题

1、从官网下载mysql&#xff1a;网址&#xff1a;http://dev.mysql.com/downloads/mysql/这是我们要找的&#xff0c;win7 64位点击下载&#xff1b;出现如图所示&#xff0c;我们不必要登录注册&#xff0c;点击红线内的即可的即可。2、安装及配置&#xff1a;然后解压到本机文…

mysql级联保存_mysql数据库级联同步配置

mysql数据库级联同步配置步骤&#xff0c;本文以一台mysql数据库多实例3306、3307和3309为例进行配置&#xff0c;3306为主库&#xff0c;3307为从库&#xff0c;3309为子从库(多台单实例与一台多实例配置是一样的)一.my.cnf文件配置1.三个数据库实例修改my.cnf配置文件&#x…

C#实现从服务器上下载DLL文件

C#实现从服务器上下载DLL文件&#xff0c;具体代码如下&#xff1a; var fullQualifiedPathToDll Server.MapPath("/") "/bin/mydll.dll"; var myFileStream new FileStream(fullQualifiedPathToDll, FileMode.Open);var fileSize myFileStream.Length…

mysql+数据库主从原理_涨知识!MySQL 主从同步原理原来是这样的

原标题&#xff1a;涨知识&#xff01;MySQL 主从同步原理原来是这样的什么是 MySQL 主从同步当 master(主)库的数据发生变化的时候&#xff0c;变化会实时的同步到slave(从)库。主从同步有什么好处水平扩展数据库的负载能力容错&#xff0c;高可用。 Failover/High Availabili…

第三方控件netadvantage UltraWebGrid如何生成带加号多级表数据也就是带子表

1.看代码不解释&#xff1a; ds.Relations.Add("fk", ds.Tables[0].Columns["Id"], ds.Tables[1].Columns["ParentCardId"], false); 将父表和子表放到dataset中通过设置外键关联&#xff0c;这样就会自动绑定上。由于某些原因表不允许自动生成列…

mysql 中int(255)_【数据类型】int ,int(1),int(255)有什么区别?

问题&#xff1a;int(255) 数据类型的容量&#xff0c;比int(1)更多吗&#xff1f;遇到问题&#xff0c;第一反应是去查说明书&#xff0c;可以在mysql document 中找到int这种数据类型的容量是多少&#xff0c;Integer Types (Exact Value)里面只提到了 INT的容量&#xff0c;…

mysql 5.5.28 winx64_mysql-5.7.28-winx64(压缩包)安装教程

1.下载完成后解压放到指定位置我放的C:\Develop\mysql-5.7.28-winx642.在目录下新建  my.ini  内容如下[mysql]# 设置mysql客户端默认字符集default-character-setutf8[mysqld]#设置3306端口port 3306# 设置mysql的安装目录basedirC:\Develop\mysql-5.7.28-winx64# 设置my…

顶级旗舰ET9出道,蔚来还是那个「最不计成本」的中国车品牌

作者 |张祥威 编辑 |德新 2008年&#xff0c;李斌和新浪的曹国伟几人一起喝酒&#xff0c;发了第一条微博&#xff0c;「天冷带围巾&#xff0c;心冷发微博」&#xff0c;一晚上涨了2000多个粉丝&#xff0c;他偶尔还会针砭时事&#xff0c;很快积累了最早一波粉丝。 创立蔚来…

jQuery对checkbox的操作(转载)

$(document).ready(function(){//checkbox全选$(#btn1).click(function(){$("[name checkbox]").attr(checked,true);});//checkbox取消选择$(#btn2).click(function(){$("[name checkbox]").attr(checked,false);});//checkbox反选$(#btn3).click(funct…

mysql5.0 测试_mysql5.0入侵测试以及防范方法分享_MySQL

bitsCN.com在做了之前的SQL SERVER之后&#xff0c;便很想尝试一下MYSQL的入侵测试已经防范&#xff0c;与大家一起分享。总的来说&#xff0c;我一直在用的是MYSQL&#xff0c;对MYSQL比较熟悉&#xff0c;相比较而言&#xff0c;感觉MYSQL更安全&#xff0c;这只是我自己胡乱…

qt 在label上以光标位置进行缩放_Qt编写地图综合应用22-动态轨迹

一、前言上一篇文章写道拿到路径规划的轨迹点坐标集合&#xff0c;并且已经可以通过调用addPolyline绘制线段的形式将轨迹点绘制&#xff0c;接下来就是要如何动态的绘制这些轨迹点&#xff0c;最简单的方法就是开个定时器挨个取出下一个经纬度坐标&#xff0c;然后调用封装好的…

[codility]Min-abs-sum

https://codility.com/demo/take-sample-test/delta2011/ 0-1背包问题的应用。我自己一开始没想出来。“首先对数组做处理&#xff0c;负数转换成对应正数&#xff0c;零去掉&#xff0c;计数排序统计有多少个不同元素及其对应个数&#xff0c;并累加所有数的和sum&#xff0c;…

mysql kettle_带你躲过mysql与kettle闹离婚的坑,开发不迷茫

其实呢kettle配mysql还是蛮不错的&#xff0c;首先人家门当户对&#xff0c;都是开源的哈&#xff0c;其次&#xff0c;kettle也是比较听话的&#xff0c;什么事都以mysql为主&#xff0c;mysql不满意&#xff0c;他就立马报错。那下面就是mysql与kettle闹脾气要离婚的例子啦&a…

poj 1161 最短路构图

题目链接&#xff1a;http://poj.org/problem?id1161 #include <cstdio> #include <cmath> #include <algorithm> #include <iostream> #include <cstring> #include <queue> #include <vector>#define maxn 400 #define INF 0x3f…

struct里面有union_联合体union无可替代的使用

在C语言中关键字union和struct用法是一样的&#xff0c;而且在项目中struct随处可见。在我的专栏"嵌入式入门——C语言入门到深入"中我详细的讲解了它们的异同。很多人编码了多年也许会认为有struct就够了&#xff0c;要union干嘛&#xff0c;感觉union的存在有些鸡肋…

[转]字符串匹配那些事

本系列文章主要介绍几种常用的字符串比较算法&#xff0c;包括但不限于蛮力匹配算法&#xff0c;KMP算法&#xff0c;BM算法&#xff0c;Horspool算法&#xff0c;Sunday算法&#xff0c;fastsearch算法&#xff0c;KR算法等等。 本文主要介绍KMP算法和BM算法&#xff0c;它们分…

查看kafka的主从状态_Mysql 主从复制,mysql-proxy读写分离

准备两台mysql服务器&#xff0c;master&#xff08;192.168.43.64&#xff09;、slave&#xff08;192.168.84.129&#xff09;master配置&#xff1a;log-binmysql-bin binlog_formatmixed server_id1 binlog_checksumnoneslave配置:然后给master授权并查看二进制文件名称和位…

UnixLinux技术文章目录(2015-12-22更新)

Unix & Linux 方面的博客整理、归纳分类&#xff0c;要坚持不懈的学习Unix &Linux&#xff0c;加油&#xff01;技术需要累积和沉淀.更需要锲而不舍的精神、持之以恒的毅力&#xff01;借此下面名句勉励自己&#xff01; 书上有路勤为径&#xff0c;学海无涯苦作舟&…

c mysql 创建存储过程_[转]MYSQL 创建存储过程

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能。存储过程的优点有一箩筐。不过最主要的还是执行效率和SQL 代码封装。特别是 SQL 代码封装功能&#xff0c;如果没有存储过程&#xff0c;在外部程序访问数据库时(例如 PHP)&#xff0c;要组织很多 SQL 语句。特别是业务逻辑复杂…

14个支持响应式设计的流行前端开发框架

在几年前&#xff0c;并没有真正意义上的前端开发。随着网络技术的发展&#xff0c;网站和 Web 应用程序变得越来越复杂&#xff0c;前端部分的工作独立出来逐渐成为现在的前端开发。如今&#xff0c;我们可以看到越来越多的公司在招聘前端开发岗位。 前端开发并不容易&#xf…