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 ...
随机推荐
- How to use groovy script on jenkins
1. Install groovy plugin 2. Add a step of groovy. (normal & systerm) 3. Execute groovy script im ...
- Glide请求图片能携带Cookie的哟!
在Web编程中我们都很熟知一个概念,当有了seesion登录状态时,你可以访问一些资源但如果你没有登录的话很多资源是无法访问的. 在android的WebApi中当然一样拥有这个概念.比如,用户的头像 ...
- springmvc配置多视图 - tiles, velocity, freeMarker, jsp
转自: http://www.cnblogs.com/shanheyongmu/p/5684595.html <!-- Velocity --> <bean id="vel ...
- WP8.1 C#代码 添加/获取Grid.ColumnDefinitions/RowDefinitions
WP8.1: ColumnDefinitions和RowDefinitions的道理是相同的,语法顺序是一样的,只不过是将ColumnDefinitions换成RowDefinitions而已 获取并 ...
- C#基础知识记录一
C#基础知识记录一 static void Main(string[] args) { #region 合并运算符的使用(合并运算符??) 更多运算符请参考:https://msdn.microsof ...
- 使用Django建立网站
# django-admin startproject csvt01 # cd csvt01 # django-admin startapp blog # vim csvt01/settings.py ...
- 让超出父视图范围的子视图响应事件,在UIView范围外响应点击
/** * 在父视图中重写该方法,这样可使超出部分响应事件. */ - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { ...
- 在CentOS系统中使用yum安装指定版本软件的方法
yum默认都是安装最新版的软件,这样可能会出一些问题,或者我们希望yum安装指定(特定)版本(旧版本)软件包.所以,就顺带分享yum安装指定(特定)版本(旧版本)软件包的方法. 过程如下: 假设这里是 ...
- goim 及时消息 集成
https://github.com/roamdy/goim-oc-sdk goim 及时消息 集成
- JSONObject put,accumulate,element的区别
public Object put (Object key, Object value) 将value映射到key下.如果此JSONObject对象之前存在一个value在这个key下,当前的valu ...