Codeforces 633C Spy Syndrome 2(Trie+暴力)
来源:互联网 发布:手机淘宝好评能修改吗 编辑:程序博客网 时间:2024/06/06 01:36
点击打开链接
题意:原本有一个串有许多单词,中间用空格隔开,后来把单词全部转换成小写,然后翻转,再把中间的所有的空格全部去掉,就得到了一个全是小写字母组成的串。
现在告诉你这样的串,并告诉你字典,要你找出一种满足条件的原串,保证有解。
思路:字典逆序插入到Trie中 在原串上暴力匹配并记录每次匹配的单词输出即可
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;const int N=1e6+20;const int M=1e5+20;int n,m;char a[M];//char s[M][1010];////end[i] 结点i是否为某个sub[x]的最后一个字符 int next[N][30],end[N];//trieint root,num;//int tot=0,ans[M],len[N];void insert(int x){int u=0,l=len[x];for(int i=l-1;i>=0;i--)//反向插入 {int id;char t=s[x][i];if(t>='A'&&t<='Z')id=t-'A'; elseid=t-'a';if(!next[u][id])next[u][id]=++num;// u=next[u][id];// }//cout<<u<<endl;end[u]=x;//} void dfs(int pos){if(pos==n){for(int i=1;i<=tot;i++){printf("%s",s[ans[i]]);if(i==tot)printf("\n");elseprintf(" ");}exit(0);}int u=root;//按字典暴力匹配 for(int i=pos+1;i<=n;i++){int id=a[i]-'a';u=next[u][id];if(!u)break;//cout<<end[u]<<" "<<u<<endl;if(end[u]!=-1){ans[++tot]=end[u];dfs(pos+len[end[u]]);//跳到该单词结尾继续匹配 tot--;//回溯 }}}int main(){memset(next,0,sizeof(next));memset(end,-1,sizeof(end));root=0;cin>>n;scanf("%s",a+1);cin>>m;for(int i=0;i<m;i++){scanf("%s",s[i]);len[i]=strlen(s[i]);insert(i);//}dfs(0);return 0;}
0 0
- Codeforces 633C Spy Syndrome 2(Trie+暴力)
- Codeforces 633C Spy Syndrome 2(Trie+dp)
- codeforces 633C. Spy Syndrome 2 trie + dp
- CodeForces 633C Spy Syndrome 2
- Codeforces 633C Spy Syndrome 2 【字典树 + DFS】
- Codeforces 633C Spy Syndrome 2 字典树
- Manthan, Codefest 16 633C Spy Syndrome 2(dfs + stl)
- Manthan, Codefest 16 C. Spy Syndrome 2(dp、trie|哈希)
- Manthan, Codefest 16 (C. Spy Syndrome 2 (trie树 + DP))
- Manthan, Codefest 16 C. Spy Syndrome 2(Trie树套DP)
- Manthan, Codefest 16 -C. Spy Syndrome 2
- trie+dp+打印路径 Codeforces633C Spy Syndrome 2
- CF633C Spy Syndrome 2
- Manthan, Codefest 16 C. Spy Syndrome 2 ★
- 【Manthan, Codefest 16C】【DP SET-MAP 字典树哈希法】Spy Syndrome 2 字符串是否由字典库单词反转加密而成
- Codeforces 271D Good Substrings 暴力+Trie
- Codeforces 493C 暴力
- codeforces 837C(暴力)
- ubuntu挂载分区问题
- 算法训练 出现次数最多的整数
- java实现打印倒直角三角形
- c语言语句
- java实现打印等腰三角形
- Codeforces 633C Spy Syndrome 2(Trie+暴力)
- 最小安装的CentOS联网
- 宏定义复习
- java实现九九乘法表的输出
- 第一章 一个简单的web服务器
- vxworks 函数速查
- 语义化版本 2.0.0
- HashMap和Hashtable的区别
- WIN7多次分盘