很久之前写的题了,当时不知道怎么dfs所以卡了一段时间,^_^

题解:由于题目给了一大堆字符串,所以首先考虑应该可以建树,之后找到T所在的位置,对T所在的位置dfs就行了

代码:

  1. 1 #include <iostream>
  2. 2 #include <cstdio>
  3. 3 #include <cstring>
  4. 4 #include <cmath>
  5. 5 #include <algorithm>
  6. 6 #include <stack>
  7. 7 #include <queue>
  8. 8 #include <vector>
  9. 9 #include <map>
  10. 10 #include <set>
  11. 11 #include <unordered_set>
  12. 12 #include <unordered_map>
  13. 13 #define ll long long
  14. 14 #define fi first
  15. 15 #define se second
  16. 16 #define pb push_back
  17. 17 #define me memset
  18. 18 const int N = 1e6 + 10;
  19. 19 const int mod = 1e9 + 7;
  20. 20 using namespace std;
  21. 21 typedef pair<int,int> PII;
  22. 22 typedef pair<long,long> PLL;
  23. 23
  24. 24 int n,idx=0,x=0;
  25. 25 int son[N][26],cnt[N];
  26. 26 char str[110],tmp[110];
  27. 27 char ans[110];
  28. 28
  29. 29 void insert(char str[]){ //建树
  30. 30 int p=0;
  31. 31 for(int i=0;str[i];++i){
  32. 32 int u=str[i]-'a';
  33. 33 if(!son[p][u]) son[p][u]=++idx;
  34. 34 p=son[p][u];
  35. 35 }
  36. 36 cnt[p]++;
  37. 37 }
  38. 38
  39. 39 void dfs(int u){ //dfs查找
  40. 40 while(cnt[u]--){
  41. 41 cout<<tmp;
  42. 42 for(int i=0;i<x;i++) cout<<ans[i];
  43. 43 cout<<endl;
  44. 44 }
  45. 45 for(int i=0;i<26;i++){
  46. 46 if(son[u][i]){
  47. 47 int r=u;
  48. 48 u=son[u][i];
  49. 49 ans[x++]=i+'a';
  50. 50 dfs(u);
  51. 51 u=r;
  52. 52 x--;
  53. 53 }
  54. 54 }
  55. 55 }
  56. 56
  57. 57 int main(){
  58. 58 ios::sync_with_stdio(false);
  59. 59 cin>>n;
  60. 60 while(n--){
  61. 61 cin>>str;
  62. 62 insert(str);
  63. 63 }
  64. 64 cin>>tmp;
  65. 65 int p=0;
  66. 66 for(int i=0;tmp[i];i++){
  67. 67 int u=tmp[i]-'a';
  68. 68 p=son[p][u];
  69. 69 }
  70. 70 dfs(p);
  71. 71 return 0;
  72. 72 }

洛谷P1628合并序列【模板】(Trie+dfs)的更多相关文章

  1. 洛谷 P1628 合并序列

    洛谷 P1628 合并序列 题目传送门 题目描述 有N个单词和字符串T,按字典序输出以字符串T为前缀的所有单词. 输入格式 输入文件第一行包含一个正整数N: 接下来N行,每行一个单词,长度不超过100 ...

  2. 洛谷P1628 合并序列

    题目描述 有N个单词和字符串T,按字典序输出以字符串T为前缀的所有单词. 输入输出格式 输入格式: 输入文件第一行包含一个正整数N: 接下来N行,每行一个单词,长度不超过100: 最后一行包含字符串T ...

  3. 【洛谷P3369】【模板】普通平衡树题解

    [洛谷P3369][模板]普通平衡树题解 题目链接 题意: 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3 ...

  4. 洛谷 P1219 八皇后【经典DFS,温习搜索】

    P1219 八皇后 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序 ...

  5. 洛谷P1219 :八皇后(DFS+回溯)

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  6. 【题解】洛谷P1074 [NOIP2009TG] 靶形数独(DFS+剪枝)

    洛谷P1074:https://www.luogu.org/problemnew/show/P1074 思路 这道题一看就是DFS 打一个分数表方便后面算分 我用x y z数组分别表示行 列 宫 是否 ...

  7. 洛谷 P2300 合并神犇

    洛谷 听说这题可以\(n^2\)水过去,不过这里介绍一种\(O(n)\)的做法. \(f[i]\)为第\(1-i\)位合并的次数. \(pre[i]\)为第\(1-i\)位最末尾的数. \(j\)为满 ...

  8. 洛谷 P1019 单词接龙 (DFS)

    题目传送门 当时一看到这题,蒟蒻的我还以为是DP,结果发现标签是搜索-- 这道题的难点在于思路和预处理,真正的搜索实现起来并不难.我们可以用一个贪心的思路,开一个dic数组记录每个单词的最小重复部分, ...

  9. 【洛谷4721】【模板】分治FFT(CDQ分治_NTT)

    题目: 洛谷 4721 分析: 我觉得这个 "分治 FFT " 不能算一种特殊的 FFT ,只是 CDQ 分治里套了个用 FFT (或 NTT)计算的过程,二者是并列关系而不是偏正 ...

随机推荐

  1. 跨站脚本漏洞(XSS)基础

    什么是跨站脚本攻击XSS 跨站脚本(cross site script),为了避免与样式css混淆所以简称为XSS,是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式. 什么是 ...

  2. 关于QTableWidget中单元格拖拽实现

    无重写函数实现单元格拖拽 缺点:需要额外设置一个记录拖拽起始行的私有成员变量和拖拽列的初始QList数据成员. 优点:无需重构函数,对于QT中信号和槽的灵活运用 信号和槽 // signal void ...

  3. ftp交互和控制命令总结

    一.FTP管理: 基于tcp,首先有客户端相服务端的知名端口21发起tcp连接建立ftp控制连接,控制连接在整个会话期间都保持打开,只用来发送连接/传送请求. 这里分为两种模式: 主动模式(PORT) ...

  4. 分布式系统:dubbo的连接机制

    目录 研究这个问题的起因 dubbo的连接机制 为什么这么做 dubbo同步转异步 dubbo的实现 纯netty的简单实现 总结 研究这个问题的起因 起因是一次面试,一次面试某电商网站,前面问到缓存 ...

  5. pytest学习笔记(pytest框架结构)

    一.pytest框架中使用setup.teardown.更灵活按照用例级别可以分为以下几类: 1.模块级:(setup_module.teardown_module)在模块始末调用 2.函数级:(se ...

  6. JavaScript中的Object类型!

    3.4.8 Object 类型 ECMAScript 中的对象其实就是一组数据和功能的集合.对象通过 new 操作符后跟对象类型的名称来创建.开发者可以通过创建 Object 类型的实例来创建自己的对 ...

  7. CISCO 如何重置3850交换机密码

    SUMMARY STEPS: Connect a terminal or PC to the switch. Set the line speed on the emulation software ...

  8. JAVA高并发集合详解

    Queue(队列)主要是为了高并发准备的容器Deque:双端队列,可以反方向装或者取 最开始jdk1.0只有Vector和hashtable 默认所有方法都实现了synchronized锁,线程安全但 ...

  9. flume agent的内部原理

    flume agent 内部原理   1.Source采集数据,EventBuilder.withBody(body)将数据封装成Event对象,source.getChannelProcessor( ...

  10. REST 架构的替代方案 为什么说GraphQL是API的未来?

    Managing enterprise accounts - GitHub Docs https://docs.github.com/en/graphql/guides/managing-enterp ...