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$个询问. 每个询问以字符串的形式给出,你需要改变这个字符串中的任意一个字符 (必须改变且只能改变 ...
随机推荐
- K-meams文本聚类算法C++实现
FROM:http://www.cnblogs.com/finallyliuyu/archive/2010/09/03/1817348.html 头文件: #ifndef _Preprocess_H ...
- iOS 状态栏管理
iOS 7 以前:状态栏由 UIApplication 管理 1.隐藏状态栏 : application.statusBarHidden = NO; 2.设置状态栏样式 : application.s ...
- Buffer
Buffer 我们用原有 IO 读写文件应该不会陌生了,顺带回顾一下,大致两种: 1. 在 InputStream 或 OutputStream 上读写字节或字节数组,读 InputStream 时用 ...
- 【高斯消元】BZOJ 1013: [JSOI2008]球形空间产生器sphere
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...
- The 7th Zhejiang Provincial Collegiate Programming Contest->Problem B:B - Somali Pirates
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3323 题意:去掉字符串里面的数字然后按输入顺序输出 #include< ...
- spoj 2148
看似很水 却wa了好多遍 spoj上果然没有一下可以水过去的题....... #include<cstdio> #include<cstring> #include< ...
- Maven SDK
Maven SDK Details Print Tags: development maven maven2 liferay v6.0 Table of Contents [-] Introdu ...
- hdu 4655 Cut Pieces
这个解题报告讲的很详细了!!! 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #in ...
- minicom 配置
问题: 1:不相应按键,只有打印 Hardware Flow Control 选择NO minicom显示中文的设置: env LANG=en_US minicom 可以 ...
- Servlet课程0425(五) sendRedirect实现不同页面共享数据
Login.java //登录界面 package com.tsinghua; import javax.servlet.http.*; import java.io.*; public class ...