Manthan, Codefest 16 -C. Spy Syndrome 2
| time limit per test | 2 seconds |
|---|---|
| memory limit per test | 256 megabytes |
| input standard | input |
| output 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.
Input
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 n lowercase 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.
Output
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.
Examples
input
30
ariksihsidlihcdnaehsetahgnisol
10
Kira
hates
is
he
losing
death
childish
L
and
Note
output
Kira is childish and he hates losing
input
12
iherehtolleh
5
HI
Ho
there
HeLLo
hello
output
HI there HeLLo
Note
In sample case 2 there may be multiple accepted outputs, “HI there HeLLo” and “HI there hello” you may output any of them.
字典树的应用,以单词建树,将密码串反向记忆化搜索
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <stack>
#include <iostream>
#include <algorithm>
using namespace std;
const int Max = 1e6+10;
const int MaxM = 10010;
typedef struct node
{
int next[30];
int mark;
}Tree;
Tree Tr[Max];
int top;
char str[Max];
char s[MaxM*10][1011];
int n,m;
int vis[MaxM];
bool flag;
int NewNode()
{
for(int i=0;i<=26;i++)
{
Tr[top].next[i] = -1;
}
Tr[top].mark = -1;
return top++;
}
int ok(char c) //大小写转换
{
if(c>='a'&&c<='z')
{
return c-'a';
}
else
{
return c-'A';
}
}
void Build(int Root,int index)
{
int len = strlen(s[index]);
for(int i = 0; i < len ;i++)
{
int ans = ok(s[index][i]);
if(Tr[Root].next[ans]==-1)
{
Tr[Root].next[ans] = NewNode();
}
Root = Tr[Root].next[ans];
}
Tr[Root].mark = index;
}
int DFS(int pos)
{
if(pos==-1)
{
return true;
}
if(vis[pos]!=-1)//判断是否之前是否遍历到
{
return vis[pos];
}
int Root = 0;
for(int i = pos;i>=0;i--)
{
int ans = ok(str[i]);
if(Tr[Root].next[ans]==-1)
{
break;
}
Root = Tr[Root].next[ans];
if(Tr[Root].mark!=-1&&DFS(i-1))
{
if( flag ) printf(" ");
else flag = true;
printf("%s", s[Tr[Root].mark]);
return vis[pos] = 1;
}
}
return vis[pos] = 0;
}
int main()
{
scanf("%d",&n);
scanf("%s",str);
scanf("%d",&m);
top = 0;flag = false;
int Root = NewNode();
for(int i=0;i<m;i++)
{
scanf("%s",s[i]);
Build(Root,i);//建立字典树
}
for(int i = 0 ; i<MaxM;i++)
{
vis[i] = -1;
}
DFS(n-1);//记忆化搜索
return 0;
}
Manthan, Codefest 16 -C. Spy Syndrome 2的更多相关文章
- Manthan, Codefest 16 C. Spy Syndrome 2 字典树 + dp
C. Spy Syndrome 2 题目连接: http://www.codeforces.com/contest/633/problem/C Description After observing ...
- CF #Manthan, Codefest 16 C. Spy Syndrome 2 Trie
题目链接:http://codeforces.com/problemset/problem/633/C 大意就是给个字典和一个字符串,求一个用字典中的单词恰好构成字符串的匹配. 比赛的时候是用AC自动 ...
- Manthan, Codefest 16
暴力 A - Ebony and Ivory import java.util.*; import java.io.*; public class Main { public static void ...
- Manthan, Codefest 16 D. Fibonacci-ish
D. Fibonacci-ish time limit per test 3 seconds memory limit per test 512 megabytes input standard in ...
- Manthan, Codefest 16(B--A Trivial Problem)
B. A Trivial Problem time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- Manthan, Codefest 16 -A Ebony and Ivory
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- CF Manthan, Codefest 16 G. Yash And Trees 线段树+bitset
题目链接:http://codeforces.com/problemset/problem/633/G 大意是一棵树两种操作,第一种是某一节点子树所有值+v,第二种问子树中节点模m出现了多少种m以内的 ...
- CF Manthan, Codefest 16 B. A Trivial Problem
数学技巧真有趣,看出规律就很简单了 wa 题意:给出数k 输出所有阶乘尾数有k个0的数 这题来来回回看了两三遍, 想的方法总觉得会T 后来想想 阶乘 emmm 1*2*3*4*5*6*7*8*9 ...
- Manthan, Codefest 16 H. Fibonacci-ish II 大力出奇迹 莫队 线段树 矩阵
H. Fibonacci-ish II 题目连接: http://codeforces.com/contest/633/problem/H Description Yash is finally ti ...
随机推荐
- angular模块和组件之间传递信息和操作流程的方法(笔记)
angular的模块之间,以及controller.directive等组件之间,是相对独立的,用以实现解耦合. 为实现相互之间传递信息及操作流程,有以下一些机制: 1.事件机制: $scope.$b ...
- PXE DHCP获取IP与传统DHCP获取IP地址的区别
正常的DHCP获取IP的流程(Discover-Offer-Request-Ack): (Discovery)主机端在LAN中发布MAC地址为FF:FF:FF:FF:FF:FF的广播来寻找DHCP服务 ...
- xcode8升级后问题总汇
一.注释快捷键无法使用 command + / 快捷键无法使用,在终端执行以下命令,然后重启Xcode即可. 1 sudo /usr/libexec/xpccachectl 二.注释快捷键 Xco ...
- CSS特异性(CSS Specificity)的细节之CSS样式权重的计算与理解(CSS样式覆盖规则)
本篇讲解CSS特异性(CSS Specificity)的细节,也就是CSS样式选择器的权重计算 通过计算选择器的权重(weight)最终决定哪个选择器将获得优先权去覆盖其他选择器的样式设定,即“优先原 ...
- 解决点击cell时,UILabel的背景颜色消失的问题
-(void)setSelected:(BOOL)selected animated:(BOOL)animated{ [super setSelected:selected animated:anim ...
- LeetCode House Robber III
原题链接在这里:https://leetcode.com/problems/house-robber-iii/ 题目: The thief has found himself a new place ...
- vue 实现分转元的 过滤器
1.啥也不说了直接上代码吧 使用起来超方便 Vue.filter('amount', function (number) { // var number = +val.replace(/[^\d.] ...
- linq操作文件方法
备忘 string directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); List<File ...
- python基础之元组、文件操作、编码、函数、变量
1.集合set 集合是无序的,不重复的,主要作用: 去重,把一个列表变成集合,就可以自动去重 关系测试,测试两组数据的交集,差集,并集等关系 操作例子如下: list_1 = [1,4,5,7,3,6 ...
- 在Eclipse 中使用tomcat8
最新版本的Eclipse让人不支持 Tomcat 8,该方法让Eclipse能使用Tomcat8 第一步:下载最新版本Eclipse for Java EE 第二步:到WTP downloads pa ...