Clairewd’s message--hdu4300(Next数组的运用)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4300
题意就是给你26的字母的加密方式,然后又给了一个串s1是包含加密后的和没有加密的但是没有加密的可能不齐全;求完整的密文和原文;
例如第二个例子:
abcdefghijklmnopqrstuvwxyz
加密方式: qwertyuiopasdfghjklzxcvbnm
s1: qwertabcde
在s1中qwert就是密文,后面的abcde就是原文;
假如加密方式不变,s1变成qwertabc,那么答案还是qwertabcde;
密文的长度肯定大于s1总长度的一半,我们可以把s1前一半当成密文后一半不变,然后解密得到s2,那么s2的Next【len】就是给出的明文的长度,总长度-明文
的长度得到的就是密文的总长度,然后输出密文和密文对应的明文就可以了;
在串中加一个*是为了防止求多了匹配;(错了好多次)
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std; const int N = 2e5+;
char s[], s1[N], s2[N], s3[N], pass[], ans[N];
int Len, Next[N], L;
void GetNext(char a[])
{
int i=, j=-;
Next[] = -;
while(i<Len+)
{
if(j==- || a[i] == a[j])
Next[++i] = ++j;
else
j = Next[j];
}
} int main()
{
int T, i;
scanf("%d", &T);
while(T--)
{
scanf("%s%s", s, s1);
for(i=; i<; i++)
pass[s[i]-'a'] = 'a'+i;
Len = strlen(s1);
L = (Len + )/;
for(i=; i<L; i++)
s2[i] = pass[s1[i]-'a'];
s2[i] = '*';
s2[i+]='\0';///不写的画下面没法用strcat;
strcat(s2, s1+L);
///printf("%s\n", s2);
GetNext(s2);
L = Len - Next[Len+];
for(i=; i<L; i++)
{
ans[i] = s1[i];
ans[i+L] = pass[s1[i]-'a'];
}
ans[i+L] = '\0';
printf("%s\n", ans);
}
return ;
}
Clairewd’s message--hdu4300(Next数组的运用)的更多相关文章
- hdu4300 Clairewd’s message【next数组应用】
Clairewd’s message Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- hdu------(4300)Clairewd’s message(kmp)
Clairewd’s message Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- HDU-4300 Clairewd’s message
http://acm.hdu.edu.cn/showproblem.php?pid=4300 很难懂题意.... Clairewd’s message Time Limit: 2000/1000 MS ...
- hdu4300 Clairewd’s message
地址:http://acm.hdu.edu.cn/showproblem.php?pid=4300 题目: Clairewd’s message Time Limit: 2000/1000 MS (J ...
- hdu 4300 Clairewd’s message KMP应用
Clairewd’s message 题意:先一个转换表S,表示第i个拉丁字母转换为s[i],即a -> s[1];(a为明文,s[i]为密文).之后给你一串长度为n<= 100000的前 ...
- 【POJ2774】Long Long Message(后缀数组)
[POJ2774]Long Long Message(后缀数组) 题面 Vjudge Description Little cat在Byterland的首都读物理专业.这些天他收到了一条悲伤地信息:他 ...
- (KMP 扩展)Clairewd’s message -- hdu -- 4300
http://acm.hdu.edu.cn/showproblem.php?pid=4300 Clairewd’s message Time Limit: 2000/1000 MS (Java/Oth ...
- hdu 4300 Clairewd’s message 字符串哈希
Clairewd’s message Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- HDU4300 Clairewd’s message(拓展kmp)
Problem Description Clairewd is a member of FBI. After several years concealing in BUPT, she interce ...
- hdu4300 Clairewd’s message 扩展KMP
Clairewd is a member of FBI. After several years concealing in BUPT, she intercepted some important ...
随机推荐
- spring 注解@Resource @Autowired区别
1.@Autowired寻找类的时候默认是ByType,也就是通过类的类型来寻找类.不过,也可以通过借助@Qualifier("name")来指定寻找的类名 @Autowired ...
- 基于HTML5堆木头游戏
今天要来分享一款很经典的HTML5游戏——堆木头游戏,这款游戏的玩法是将木头堆积起来,多出的部分将被切除,直到下一根木头无法堆放为止.这款HTML5游戏的难点在于待堆放的木头是移动的,因此需要你很好的 ...
- Eclipse报Caused by: java.lang.OutOfMemoryError: PermGen space解决思路
一.修改tomcat/bin目录下的catalina.bat 在“rem ----- Execute The Requested Command ----------------------”下加入 ...
- VMware12激活码,win10激活码
VMware Workstation 12序列号: 5A02H-AU243-TZJ49-GTC7K-3C61N win10激活码:这里在网上搜集到很多激活码,可能有的不能用. WRUF7-AFI0 ...
- msyql的内存计算
本文将讨论MySQL内存相关的一些选项,包括: 单位都是b,不是kb,即1B=1/(1024*1024*1024)G 1)全局的buffer,如innodb_buffer_pool_size: 2)线 ...
- SQL Server,MySql,Oracle数据库的默认端口号
SQL Server默认端口号为:1433 MySQL 默认端口号为:3306 Oracle 默认端口号为:1521
- Python之查询美国护照状态
该程序会每隔至少1秒进行一次护照状态查询 需要修改passportNo变量为自己的护照号码. 另外需要pip install beautifulsoup4 #coding=utf-8 import r ...
- Python安装相关的机器学习库以及图像处理库
安装 sudo apt-get install python-scipy sudo apt-get install python-numpy sudo apt-get install python-m ...
- List<T>转DataTable
/// <summary> /// 将集合类转换成DataTable /// </summary> /// <param name="list"> ...
- C#中Uri类的解释
URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源.而URL是uniform resource locator,统一资源定位器,它是一种具体的UR ...