Trie——Luogu3879 [TJOI2010]阅读理解
来源:互联网 发布:python能干嘛 编辑:程序博客网 时间:2024/05/20 18:53
题面:Luogu3879
一开始我感觉好像可以用set搞一搞的
然后发现迭代器我实在不太会用。。。
而且到底set怎么存我也不大有数
后来想了想,还是Trie靠谱
就是在结束标记记录一下这里有多少文章有这个单词就好了
感觉set原理也是一样的
#include <cstdio>#include <algorithm>#include <cmath>#include <cstring>#include <iostream>#include <ctime>#include <map>#include <queue>#include <cstdlib>#include <string>#include <climits>#include <set>#include <vector>using namespace std;inline int read(){ int k=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){k=k*10+ch-'0';ch=getchar();} return k*f;}char s[10010];int nex[500010][26],n,cnt=0;bool b[500010][110];inline void insert(int x){ scanf("%s",s+1);int l=strlen(s+1); int now=0; for(int i=1;i<=l;i++){ int p=s[i]-'a'; if(!nex[now][p])nex[now][p]=++cnt; now=nex[now][p]; } b[now][x]=1;}inline void check(){ scanf("%s",s+1);int l=strlen(s+1); int now=0,flag=1; for(int i=1;i<=l;i++){ int p=s[i]-'a'; if(!nex[now][p]){flag=0;break;} now=nex[now][p]; } if(flag)for(int i=1;i<=n;i++)if(b[now][i])printf("%d ",i); puts("");}int main(){ n=read(); for(int i=1;i<=n;i++){ int x=read(); for(int j=1;j<=x;j++)insert(i); } int m=read(); for(int i=1;i<=m;i++)check(); return 0;}
阅读全文
1 0
- Trie——Luogu3879 [TJOI2010]阅读理解
- 洛谷[3879] [TJOI2010]阅读理解(trie树模板)
- 数据结构——trie
- Trie——电话簿
- Trie——理论知识
- trie树—数据结构
- Trie三兄弟——标准Trie、压缩Trie、后缀Trie
- Trie三兄弟——标准Trie、压缩Trie、后缀Trie
- 阅读笔记——深入理解Java虚拟机
- 阅读理解
- 阅读理解
- 数据结构——DoubleArray Trie
- HihoCoder——Trie树
- Trie——字典树
- Trie树——java
- Trie—单词查找树
- Trie—单词查找树
- Trie—单词查找树
- vim常用命令总结
- C++ 将数据写入链表,将链表写入文件,再将文件中的内容读出
- 使用node-supervisor自动重启node程序
- 滴滴打车2017年秋招编程题:子串和最大问题
- 你真的懂JAVA吗
- Trie——Luogu3879 [TJOI2010]阅读理解
- Hive UDF调试打印的方法
- 二叉树
- #NOIP模拟赛#捕鼠器mousetrap(树)
- 网络流模板
- HttpServlet源码分析
- ES6 —(Module 的语法)
- 超声前沿研究
- 坐标转换--基准面转换(布尔莎七参数)