Passward
问题 A: Passward
时间限制: 1 Sec 内存限制: 512 MB
题目描述
你来到了一个庙前,庙牌上有一个仅包含小写字母的字符串 s。
传说打开庙门的密码是这个字符串的一个子串 t,并且 t 既是 s 的前缀又是 s 的后缀并且还在 s 的中间位置出现过一次。
如果存在这样的串,请你输出这个串,如有多个满足条件的串,输出最长的那一个。
如果不存在这样的串,输出"Just a legend"(去掉引号)。
输入格式:
仅一行,字符串 s。
输出格式:
如题所述
样例输入
fixprefixsuffix
样例输出:
fix
数据范围:
对于 60%的数据, s 的长度<=100
对于 100%的数据, s 的长度<=100000
这道题和之前的题目名字好像啊(ˇˍˇ) ~,差点打错了。。
想不到我也有考试1A的一天,一道挺水的题,直接打哈希了。。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int P=;
vector<int>v;
char s[];
unsigned long long ha[],xp[];
int ss;
void get_hash(char *s){
memset(xp,,sizeof(xp));
xp[]=;
for(int i=ss-;i>=;--i)
ha[i]=ha[i+]*P+s[i]-'a';
for(int i=;i<=ss;++i)
xp[i]=xp[i-]*P;
}
bool judge(int len){
if(s[ss-]!=s[len-]) return false;
long long ans1=ha[]-ha[len]*xp[len];
long long ans2=ha[ss-len];
if(ans1!=ans2) return false;
for(int i=;i<v.size();++i){
int o=v[i];
if(o+len<ss){
long long ans3=ha[o]-ha[o+len]*xp[len];
if(ans3==ans1) return true;
}
else return false;
}
return false;
}
int main(){
scanf("%s",s);ss=strlen(s);
get_hash(s);if(ss<=) ss=;
for(int i=;i<ss;++i)
if(s[i]==s[])
v.push_back(i);
int tmp=;
for(int i=ss-;i;--i){
if(judge(i)){
tmp=i;
break;
}
}
if(!tmp) printf("Just a legend");
else for(int i=;i<tmp;++i) cout<<s[i];
return ;
}
听说正解是KMP??
Passward的更多相关文章
- 血的教训 password写成passward,教训应该从首页赋值 参数名
血的教训 password写成passward,教训应该从首页赋值 参数名
- jQuery学习之路(5)- 简单的表单应用
▓▓▓▓▓▓ 大致介绍 接下来的这几个博客是对前面所学知识的一个简单的应用,来加深理解 ▓▓▓▓▓▓ 单行文本框 只介绍一个简单的样式:获取和失去焦点改变样式 基本结构: <form actio ...
- ActiveMQ的集群方案对比及部署
转载:http://blog.csdn.net/lifetragedy/article/details/51869032 ActiveMQ的集群 内嵌代理所引发的问题: 消息过载 管理混乱 如何解决这 ...
- 终于等到你---订餐系统之负载均衡(nginx+memcached+ftp上传图片+iis)
又见毕业 对面工商大学的毕业生叕在拍毕业照了,一个个脸上都挂满了笑容,也许是满意自己四年的修行,也许是期待步入繁华的社会... 恰逢其时的连绵细雨与满天柳絮,似乎也是在映衬他们心中那些离别的忧伤,与对 ...
- Linux:使用nohup让进程在后台可靠运行
学习之余我最大的乐趣是找一部不错的电影慢慢品味,这也是我缓解压力的最好方式之一,由于我常去的字幕组网站需要签到才可以下载字幕,像这种娱乐网站谁有时间天天记得去签到呢,but作为一个准程序猿应该有更好的 ...
- mongo创建用户
use dwb db.createUser( { "user" : "username", "pwd& ...
- firefox,跨域ajax 调用方法
在A站点ajax 调用B站的页面(方法)时, 使用post,且dataType类型为jsonp 有时在IE会有No Transport的错误提示,请加 jQuery.support.cors = tr ...
- mysql 导入导出方法。
1.导出 mysqldump -u username - p databasename >名.sql enter passward: 2.导入:mysql -uroot -proot sour ...
- webform--LinQ的相关操作
LinQ:LineQ to Sq类:集成化的数据访问类:与ado.net没区别:--------------------------------------------LinQ的创建:右键,添加新建项 ...
随机推荐
- C语言---字符数组
一.PTA实验作业 题目1:7-2 统计一行文本的单词个数 1. 本题PTA提交列表 2. 设计思路 定义循环变量i,j定义不为空格的字符数count,定义单词数number,i,j,count,nu ...
- python实现线性回归
参考:<机器学习实战>- Machine Learning in Action 一. 必备的包 一般而言,这几个包是比较常见的: • matplotlib,用于绘图 • numpy,数组处 ...
- listview 与 button 焦点 在item添加下列属性
android:descendantFocusability="blocksDescendants" http://zhaojianping.blog.51cto.com/7251 ...
- PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点
PHP.Java.Python.C.C++ 这几种编程语言都各有什么特点或优点 汇编: C: Java: C#: PHP: Python: Go: Haskell: Lisp: C++: &l ...
- 亚马逊AWS学习——VPC里面几个概念的关系
VPC中涉及几个概念: VPC 子网 路由表 Internet网关 安全组 今天来讲讲这几个概念之间的关系. 1. VPC 说的就是VPC,当然VPC范围是最大的,VPC即virtual privat ...
- Cypher语法
cypher是neo4j官网提供的声明式查询语言,非常强大,用它可以完成任意的图谱里面的查询过滤,我们知识图谱的一期项目 基本开发完毕,后面会陆续总结学习一下neo4j相关的知识.今天接着上篇文章来看 ...
- Android广播发送失败
现在至今为止Android 8.0 不支持大部分广播收发 如果无法使用建议换至Android 7.0版本 且 minSdkVersion 24
- 用Java语言实现简单的词法分析器
编译原理中的词法分析算是很重要的一个部分,原理比较简单,不过网上大部分都是用C语言或者C++来编写,笔者近期在学习Java,故用Java语言实现了简单的词法分析器. 要分析的代码段如下: 输出结果如下 ...
- MySQL关系表查询两个表的数据
如下,有四张表:游戏类型表,游戏表,点卡和游戏关系表,点卡表 CREATE TABLE `gamesType`( `tId` INT AUTO_INCREMENT NOT NULL PRIMARY K ...
- Web Api 利用 cors 实现跨域
一.安装 cors 二.修改 Web.config <appSettings> <add key="cors:allowedMethods" value=&quo ...