Codeforces 633 C Spy Syndrome 2 字典树
题意:还是比较好理解
分析:把每个单词反转,建字典树,然后暴力匹配加密串
注:然后我就是特别不理解,上面那种能过,而且时间很短,但是我想反之亦然啊
我一开始写的是,把加密串进行反转,然后单词正着建字典树,然后就TLE了,反着写就能过
真是百思不得解,然后我猜测可能是单词数目比较少
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N=+;
char s[];
char str[][];
int len[];
int trie[N][],mk[N];
int ans[],tot,cnt,m,n;
void add(int x)
{
int now=;
for(int i=len[x]-; i>=; --i)
{
char tmp=str[x][i];
if(tmp<'a'||tmp>'z')
tmp+='a'-'A';
int p=tmp-'a';
if(!trie[now][p])
trie[now][p]=++cnt;
now=trie[now][p];
}
mk[now]=x;
}
void solve(int pos)
{
if(pos==n)
{
for(int i=; i<tot; ++i)
printf("%s ",str[ans[i]]);
printf("%s\n",str[ans[tot]]);
exit();
}
int now=;
for(int i=pos+; i<=n; ++i)
{
int p=s[i]-'a';
now=trie[now][p];
if(!now)break;
if(mk[now])
{
ans[++tot]=mk[now];
solve(pos+len[mk[now]]);
--tot;
}
}
}
int main()
{
scanf("%d%s",&n,s+);
// for(int i=1; i<=n/2; ++i)
// swap(s[i],s[n-i+1]);
scanf("%d",&m);
for(int i=; i<=m; ++i)
{
scanf("%s",str[i]);
len[i]=strlen(str[i]);
add(i);
}
solve();
return ;
}
Codeforces 633 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 ...
- Codeforces 633C Spy Syndrome 2 | Trie树裸题
Codeforces 633C Spy Syndrome 2 | Trie树裸题 一个由许多空格隔开的单词组成的字符串,进行了以下操作:把所有字符变成小写,把每个单词颠倒过来,然后去掉单词间的空格.已 ...
- Codeforces 455B A Lot of Games(字典树+博弈)
题目连接: Codeforces 455B A Lot of Games 题目大意:给定n.表示字符串集合. 给定k,表示进行了k次游戏,然后是n个字符串.每局開始.字符串为空串,然后两人轮流在末尾追 ...
- Codeforce 633.C Spy Syndrome 2
C. Spy Syndrome 2 time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Educational Codeforces Round 12 E. Beautiful Subarrays 字典树
E. Beautiful Subarrays 题目连接: http://www.codeforces.com/contest/665/problem/E Description One day, ZS ...
- 【codeforces 514C】Watto and Mechanism(字典树做法)
[题目链接]:http://codeforces.com/contest/514/problem/C [题意] 给你n个字符串; 然后给你m个询问;->m个字符串 对于每一个询问字符串 你需要在 ...
- codeforces 1285D. Dr. Evil Underscores(字典树)
链接:https://codeforces.com/problemset/problem/1285/D 题意:给n个数a1,a2,a3.....an,找到一个数X,使得X 异或所有的ai ,得到的ma ...
- Codeforces 948D Perfect Security 【01字典树】
<题目链接> 题目大意: 给定两个长度为n的序列,可以改变第二个序列中数的顺序,使得两个序列相同位置的数异或之后得到的新序列的字典序最小. 解题分析: 用01字典树来解决异或最值问题.因为 ...
- Codeforces 514C Watto and Mechanism(字典树)
题目链接 Watto and Mechanism 题意 给出$n$个串(相当于字典),然后给出$m$个询问. 每个询问以字符串的形式给出,你需要改变这个字符串中的任意一个字符 (必须改变且只能改变 ...
随机推荐
- Solr + Hadoop = Big Data Love
FROM:http://architects.dzone.com/articles/solr-hadoop-big-data-love 许多人使用Hadoop的开源项目来处理大数据的大数据集,因为它是 ...
- linux驱动系列之arm汇编
在arm平台学习linux时,会遇到arm汇编指令,arm汇编指令与8086汇编指令很多地方都不同,在此记下来以免后面忘了,同时在学习了汇编指令之后分析一些汇编指令编写的代码. 一.相对跳转指令b.b ...
- Gnome 插件介绍
插件:Applications Menuhttps://extensions.gnome.org/extension/6/applications-menu/ TopIconshttps://exte ...
- POJ1734 - Sightseeing trip
DescriptionThere is a travel agency in Adelton town on Zanzibar island. It has decided to offer its ...
- PAT-乙级-1044. 火星数字(20)
1044. 火星数字(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 火星人是以13进制计数的: 地球人的 ...
- ural 1221
本来就是个很水的题 就是枚举起点长度然后直接判断就行了 但是比赛的时候写了个大bug 还找不出来 自己太水了 #include <cstdio> #include <c ...
- 快速排序(quicksort)算法实现
快速排序(quicksort)是分治法的典型例子,它的主要思想是将一个待排序的数组以数组的某一个元素X为轴,使这个轴的左侧元素都比X大,而右侧元素都比X小(从大到小排序).然后以这个X在变换后数组的位 ...
- java CMS gc解析
转载: http://www.blogjava.net/killme2008/archive/2009/09/22/295931.html CMS,全称Concurrent Low Pause ...
- tomcat集群部署
1.apache只有处理静态事物的能力, 而tomcat的强项就是处理动态的请求 2.由apache作为入口,如果是请求静态页面或者是静态文件,由apache直接提供,如果是请求动态页面,则让apac ...
- Servlet课程0424(二) 通过继承GenericServlet来开发Servlet
//这是第二种开发servlet的方法(继承GernericServlet) package com.tsinghua; import javax.servlet.GenericServlet; im ...