Codeforce 633.C Spy Syndrome 2
2 seconds
256 megabytes
standard input
standard output
After observing the results of Spy Syndrome, Yash realised the errors of his ways. He now believes that a super spy such as Siddhant can't use a cipher as basic and ancient as Caesar cipher. After many weeks of observation of Siddhant’s sentences, Yash determined a new cipher technique.
For a given sentence, the cipher is processed as:
- Convert all letters of the sentence to lowercase.
- Reverse each of the words of the sentence individually.
- Remove all the spaces in the sentence.
For example, when this cipher is applied to the sentence
Kira is childish and he hates losing
the resulting string is
ariksihsidlihcdnaehsetahgnisol
Now Yash is given some ciphered string and a list of words. Help him to find out any original sentence composed using only words from the list. Note, that any of the given words could be used in the sentence multiple times.
The first line of the input contains a single integer n (1 ≤ n ≤ 10 000) — the length of the ciphered text. The second line consists of nlowercase English letters — the ciphered text t.
The third line contains a single integer m (1 ≤ m ≤ 100 000) — the number of words which will be considered while deciphering the text. Each of the next m lines contains a non-empty word wi (|wi| ≤ 1 000) consisting of uppercase and lowercase English letters only. It's guaranteed that the total length of all words doesn't exceed 1 000 000.
Print one line — the original sentence. It is guaranteed that at least one solution exists. If there are multiple solutions, you may output any of those.
30
ariksihsidlihcdnaehsetahgnisol
10
Kira
hates
is
he
losing
death
childish
L
and
Note
Kira is childish and he hates losing
12
iherehtolleh
5
HI
Ho
there
HeLLo
hello
HI there HeLLo
In sample case 2 there may be multiple accepted outputs, "HI there HeLLo" and "HI there hello" you may output any of them.
题目大意:将一个字符串加密的规则:先将所有字母变成小写字母,再将每个单词翻转,拼接在一起.现在给出可能用到的单词,还原字符串.
分析:既然题干中说所有的单词都翻转过来了,那么就把它给出的单词全部翻转过来.之后就有点像是在一个字典中查询单词有没有出现过这种操作,利用trie.因为n不大,在匹配加密串的时候可以用搜索:固定起点,枚举终点,每次看在trie中能不能找到结尾标记以及能不能走下去.翻转操作可以变成倒着插入trie.
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; int n, m, tot = , cnt, ans[], len[];
char s[][], s2[]; struct node
{
int tr[];
int id;
}e[]; void insert(char *ss, int x)
{
int len = strlen(ss);
int u = ;
for (int i = len - ; i >= ; i--)
{
char ch = ss[i];
if (ch < 'a' || ch > 'z')
ch += 'a' - 'A';
int p = ch - 'a';
if (!e[u].tr[p])
e[u].tr[p] = ++tot;
u = e[u].tr[p];
}
e[u].id = x;
} void solve(int dep)
{
if (dep == n + )
{
for (int i = ; i < cnt; i++)
cout << s[ans[i]] << " ";
cout << s[ans[cnt]] << endl;
exit();
}
int u = ,i;
for (i = dep; i <= n; i++)
{
int p = s2[i] - 'a';
if (!e[u].tr[p])
break;
u = e[u].tr[p];
if (e[u].id)
{
ans[++cnt] = e[u].id;
solve(dep + len[e[u].id]);
--cnt;
}
}
} int main()
{
scanf("%d", &n);
scanf("%s", s2 + );
scanf("%d", &m);
for (int i = ; i <= m; i++)
{
scanf("%s", s[i]);
len[i] = strlen(s[i]);
insert(s[i], i);
}
solve(); return ;
}
Codeforce 633.C Spy Syndrome 2的更多相关文章
- Codeforces 633 C Spy Syndrome 2 字典树
题意:还是比较好理解 分析:把每个单词反转,建字典树,然后暴力匹配加密串 注:然后我就是特别不理解,上面那种能过,而且时间很短,但是我想反之亦然啊 我一开始写的是,把加密串进行反转,然后单词正着建字典 ...
- Codeforce 633C. Spy Syndrome 2
C. Spy Syndrome 2 time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Manthan, Codefest 16 C. Spy Syndrome 2 字典树 + dp
C. Spy Syndrome 2 题目连接: http://www.codeforces.com/contest/633/problem/C Description After observing ...
- Manthan, Codefest 16 -C. Spy Syndrome 2
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- codeforces 633C. Spy Syndrome 2 hash
题目链接 C. Spy Syndrome 2 time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- Codeforces 633C Spy Syndrome 2 | Trie树裸题
Codeforces 633C Spy Syndrome 2 | Trie树裸题 一个由许多空格隔开的单词组成的字符串,进行了以下操作:把所有字符变成小写,把每个单词颠倒过来,然后去掉单词间的空格.已 ...
- CF#633C Spy Syndrome 2 DP+二分+hash
Spy Syndrome 2 题意 现在对某个英文句子,进行加密: 把所有的字母变成小写字母 把所有的单词反过来 去掉单词之间的空格 比如:Kira is childish and he hates ...
- CF #Manthan, Codefest 16 C. Spy Syndrome 2 Trie
题目链接:http://codeforces.com/problemset/problem/633/C 大意就是给个字典和一个字符串,求一个用字典中的单词恰好构成字符串的匹配. 比赛的时候是用AC自动 ...
- CF633C:Spy Syndrome 2——题解
https://vjudge.net/problem/CodeForces-633C http://codeforces.com/problemset/problem/633/C 点击这里看巨佬题解 ...
随机推荐
- ip route ifconfig 基本命令
1.route命令 route –n route add –net 192.168.2.0/24 dev eth0 route add –net 192.168.2.0 netmask 255.255 ...
- RNN: Feed Forward, Back Propagation Through Time and Truncated Backpropagation Through Time
原创作品,转载请注明出处哦~ 了解RNN的前向.后向传播算法的推导原理是非常重要的,这样, 1. 才会选择正确的激活函数: 2. 才会选择合适的前向传播的timesteps数和后向传播的timeste ...
- Node2vec 代码分析
Node2vec 代码从Github上clone到本地,主要是main.py和node2vec.py两个文件. 下面把我的读代码注释放到上面来, import numpy as np import n ...
- gevent协程、select IO多路复用、socketserver模块 改造多用户FTP程序例子
原多线程版FTP程序:http://www.cnblogs.com/linzetong/p/8290378.html 只需要在原来的代码基础上稍作修改: 一.gevent协程版本 1. 导入geven ...
- Python最简编码规范
前言 本文是阅读<Python Coding Rule>之后总结的最为精华及简单的编码规范,根据每个人不同喜好有些地方会有不同的选择,我只是做了对自己来说最简单易行的选择,仅供大家参考. ...
- [python][odlboy]设置字符串打印的颜色
格式:\033[显示方式;前景色;背景色m 说明:前景色 背景色 颜色---------------------------------------30 ...
- Beta发布—美工+文案
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2408 视频展示地址:https://www.bilibili.com/v ...
- postman的巨坑 之 cookie
问题描述:一个后端接口,该接口需要校验登录态,登录态通过cookie中的一个传参k判断.在保证登录的前提下,调用机器A上的接口一直报“用户未登录”,调机器B上就没问题,于是开始排查问题. 解决过程: ...
- JSON.parse与eval
文章:JSON.parse 与 eval() 对于解析json的问题 json的标准格式:{"name":"jobs"} 名字和值都必须用双引号引起来.
- 陈爽 软件工程导论week2.1
软件工程导论week2.1 第一章概论问题:1.程序=算法+数据结构 软件=程序+软件工程软件工程的目标是创造足够好的软件,可以从用户满意度,可靠性,软件流程的质量,可维护性等方面判断,但是我们没有 ...