【Henu ACM Round #13 E】Spy Syndrome 2
【链接】  我是链接,点我呀:) 
 【题意】
在这里输入题意
【题解】
对m个串建立一棵字典树。
然后对主串。
尝试从第一个位置开始.在字典树中尝试匹配
如果匹配到了位置i
就再从位置i+1开始尝试匹配
(这时又重新从根节点开始重新匹配
每次匹配最多只要往下走50步。
写个递归的过程就好。
【代码】
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6;
const int NN = 1e4;
const int M = 1e5;
int n,cnt,sta[NN+10];
int  tree[N+10][26],tot=1,val[N+10];
string S,s[M+10];
void _insert(int idx){
    int pos = 1;
    for (int i = (int)s[idx].size()-1;i>=0;i--){
        int key = tolower(s[idx][i])-'a';
        if (tree[pos][key]==0){
            tree[pos][key] = ++tot;
        }
        pos = tree[pos][key];
    }
    val[pos] = idx;
}
void out_ans(){
    for (int i = 1;i <= cnt;i++)
        cout <<s[sta[i]]<<' ';
    cout<<endl;
}
void dfs(int cur){
    if (cur==n-1){
        out_ans();
        exit(0);
    }
    int pos = 1;
    for (int i = cur+1;i<n ;i++){
        int key = S[i]-'a';
        if (tree[pos][key]!=0){
            pos = tree[pos][key];
        }else break;
        if (val[pos]!=0){
            cnt++;
            sta[cnt] = val[pos];
            dfs(i);
            cnt--;
        }
    }
}
int main(){
	#ifdef LOCAL_DEFINE
	    freopen("rush_in.txt", "r", stdin);
	#endif
	ios::sync_with_stdio(0),cin.tie(0);
    cin >>n;
    cin >> S;
    int num;
    cin >> num;
    for (int i = 1;i <= num;i++){
        cin >> s[i];
        _insert(i);
    }
    dfs(-1);
	return 0;
}
												
											【Henu ACM Round #13 E】Spy Syndrome 2的更多相关文章
- 【Henu ACM Round #13 F】Fibonacci-ish
		
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 枚举序列的头两个数字是什么 O(N^2) 然后头两个数字确定之后. f[3],f[4]..就确定了 只需查看f[3],f[4]..是 ...
 - 【Henu ACM Round #13  D】A Trivial Problem
		
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 123...n中末尾0的个数 只会由素因子2和5的个数决定且等于 Min{cnt[2],cnt[5]} 且素因子2的个数一定会比5多 ...
 - 【Henu ACM Round #13 C】 Ebony and Ivory
		
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 先求出c-bx的所有可能 ->存在map里面 然后枚举y看看ay在不在map里面 在的话就有解. 这样复杂度是\(O(N*lo ...
 - 【Henu ACM Round #13 B】Spider Man
		
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 会发现每个环可以操作的次数是固定的. (环的大小-1 也就是说一旦环确定了.其实结果就已经确定了. 则直接看操作总数的奇偶性就可以了 ...
 - 【Henu ACM Round #13 A】 Hulk
		
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟. [代码] #include <bits/stdc++.h> using namespace std; int m ...
 - 【Henu ACM Round#20 E】Star
		
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 找规律. 1,13,37.... 6n(n-1) + 1 [代码] #include <bits/stdc++.h> # ...
 - 【Henu ACM Round#24 E】Connected Components
		
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 要求把连续的一段li..ri的边全都删掉. 然后求剩下的图的联通数 如果暴力的话 复杂度显然是O(k*m)级别的. 考虑我们把li. ...
 - 【Henu ACM Round#24 D】Iterated Linear Function
		
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把B提取出来就是一个等比数列了. 求和一下会发现是这种形式. \(B*\frac{(A^n-1)}{A-1}+A^n*x\) 则求一 ...
 - 【Henu ACM Round#24 C】Quiz
		
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 肯定是这样 先放k-1个,然后空1个,然后再放k-1个.然后再空1个.. 以此类推. 然后如果(n/k)*(k-1)+n%k> ...
 
随机推荐
- mvc中使用remote属性来做ajax验证
			
mvc中使用remote属性来做ajax验证比較easy : [Remote("Action", "Controller", AdditionalFields ...
 - zzulioj--1804--ZY学长的密码(字符串)
			
1804: ZY学长的密码 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 140 Solved: 53 SubmitStatusWeb Board ...
 - SSL 延迟与 Http、Https
			
SSL延迟有多大? 1. 基本概念 ssl 协议由网景公司(Netscape)设计,由此网络链接从 http 逐步走向更为安全的 https 加密链接模式. HTTPs 链接和 HTTP 链接都建立在 ...
 - 1893. [国家集训队2011]等差子序列(bitset)
			
★★ 输入文件:nt2011_sequence.in 输出文件:nt2011_sequence.out 简单对比时间限制:0.3 s 内存限制:512 MB [试题来源] 2011中国 ...
 - 关于ListView的一些不常用到的属性
			
1.setCacheColorHint自定义listview的时候,当你不使用Android:cacheColorHint=“#00000000”会出现下面选中一个空间黑色底色的情况,破坏整体美观度 ...
 - [POI2009]KON-Ticket Inspector(二维前缀和+DP)
			
题意 有n个车站,现在有一辆火车从1到n驶过,给出aij代表从i站上车j站下车的人的个数.列车行驶过程中你有K次检票机会,所有当前在车上的人会被检票,问最多能检多少个不同的人的票 (n<=600 ...
 - Test-我喜欢LInux
			
测试发帖流程 哈哈 习惯一下先.
 - iptables指南
			
在了解iptables之前我们先了解一下 防火墙 的概念防火墙是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网,防火墙也是一种位于内部网络与外部网络之间的网络安全系统 ...
 - 20180929 北京大学 人工智能实践:Tensorflow笔记04
			
20180929 北京大学 人工智能实践:Tensorflow笔记03(2018-09-30 00:01)
 - spring mvc 防止重复提交表单的两种方法,推荐第二种
			
第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token.而且当一个页面使用ajax时,多个表单提交就会有问题. 注解Token代码: package c ...