当前位置:网站首页>Dictionary tree simple introductory question (actually blue question?)
Dictionary tree simple introductory question (actually blue question?)
2022-07-05 21:00:00 【Soup key TJ】
[TJOI2010] reading comprehension
Title Description
The English teacher left N N N A reading comprehension assignment , But every English essay has many new words to look up in the dictionary , To save time , Now let's do a statistic , Let's count some new words that have appeared in some essays .
Input format
The first line is an integer N N N , Indicates the number of short articles , Each essay contains only spaces and lowercase letters .
Pressed down N N N That's ok , Each line describes a short passage . The beginning of each line is an integer L L L , This passage is written by L L L One word makes up .
Next is L L L Word , Separate words with a space .
Then it is an integer M M M , It means to ask several times . In the back M M M That's ok , Each line represents a new word to be counted .
Output format
Output one line for each new word , Count the number of essays in which it has appeared , And output the serial number of the passage from small to large , The serial number should not be repeated , The serial numbers are separated by a space ( Note that there should be no spaces in front of the first sequence number and after the last sequence number ). If the word has never appeared , Then output a blank line .
Examples #1
The sample input #1
3
9 you are a good boy ha ha o yeah
13 o my god you like bleach naruto one piece and so do i
11 but i do not think you will get all the points
5
you
i
o
all
naruto
Sample output #1
1 2 3
2 3
1 2
3
2
Tips
about 30 % 30\% 30% The data of , 1 ≤ M ≤ 1 0 3 1\le M\le 10^3 1≤M≤103 .
about 100 % 100\% 100% The data of , 1 ≤ M ≤ 1 0 4 1\le M\le 10^4 1≤M≤104, 1 ≤ N ≤ 1 0 3 1\le N\le 10^3 1≤N≤103 .
The length of each essay ( Contain spaces between adjacent words ) ≤ 5 × 1 0 3 \le 5\times 10^3 ≤5×103 character , The length of each word ≤ 20 \le 20 ≤20 character .
Time limit of each test point 2 2 2 second .
All processes are in the notes
#include<bits/stdc++.h>
using namespace std;
const int N=5e5+5;
typedef long long ll;
int son[N][30],idx,n,l,m;
char a[N];
bitset<1010> sign[N];
// use bool Explosive space
// use bool One value accounts for 1 byte ,1 Bytes are 8 The bit
// use bitset Then each bool Value takes only one bit , Greatly save space
void insert(char str[],int k){
// Insert string , At the same time, tell me which line it is
int p=0; // Traverse the insert from the root node
int l=strlen(str);
for(int i=0;i<l;i++){
int u=str[i]-'a'; // Convenience as a subscript
if(!son[p][u]) son[p][u]=++idx;
// View the current node p Child nodes of u Whether the number has been given , If there is no mark, it will be numbered
p=son[p][u];// Move to the next node conversion position
}
sign[p][k]=1;// Mark that the string exists in k That's ok
}
void find(char str[]){
// Find the string
int p=0,signsign=1;// initialization , Go back to the root node and continue to check
int l=strlen(str);
for(int i=0;i<l;i++){
// Traverse the nodes to query
int u=str[i]-'a';
if(!son[p][u]){
// Once found unmarked , Then the string... Does not exist , Exit traversal query
signsign=0;// At the same time, the tag does not exist
break;
}
p=son[p][u];// Move to the next node conversion position
}
if(signsign){
// Judge whether the query is successful by marking
for(int i=1;i<=n;i++){
if(sign[p][i]){
// Check whether this string exists in this line through the tag
printf("%d ",i);
}
}printf("\n");
}
else{
puts("");
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>l;
for(int j=1;j<=l;j++){
scanf("%s",a);
insert(a,i);
}
}
cin>>m;
for(int i=1;i<=m;i++){
scanf("%s",a);
find(a);
}
return 0;
}
边栏推荐
- R语言【数据管理】
- 示波器探头对测量带宽的影响
- 序列联配Sequence Alignment
- Influence of oscilloscope probe on signal source impedance
- Abnova CRISPR spcas9 polyclonal antibody protocol
- 10000+ 代码库、3000+ 研发人员大型保险集团的研发效能提升实践
- Mode - "Richter replacement principle"
- Write an interface based on flask
- 解读协作型机器人的日常应用功能
- Hdu2377bus pass (build more complex diagram +spfa)
猜你喜欢

MySQL InnoDB架构原理

学习机器人无从下手?带你体会当下机器人热门研究方向有哪些

10000+ 代码库、3000+ 研发人员大型保险集团的研发效能提升实践

Using webassembly to operate excel on the browser side

Open source SPL eliminates tens of thousands of database intermediate tables

Write an interface based on flask

XML建模

请查收.NET MAUI 的最新学习资源

ArcGIS\QGIS无插件加载(无偏移)MapBox高清影像图

2. < tag hash table, string> supplement: Sword finger offer 50 The first character DBC that appears only once
随机推荐
PHP反序列化+MD5碰撞
R语言【数据管理】
10000+ 代码库、3000+ 研发人员大型保险集团的研发效能提升实践
Traps in the explode function in PHP
ClickHouse 复制粘贴多行sql语句报错
培养机器人教育创造力的前沿科技
leetcode:1139. 最大的以 1 为边界的正方形
Sequence alignment
Mode - "Richter replacement principle"
Material Design组件 - 使用BottomSheet展现扩展内容(二)
研學旅遊實踐教育的開展助力文旅產業發展
2. < tag hash table, string> supplement: Sword finger offer 50 The first character DBC that appears only once
中国的软件公司为什么做不出产品?00后抛弃互联网;B站开源的高性能API网关组件|码农周刊VIP会员专属邮件周报 Vol.097
AITM 2-0003 水平燃烧试验
The development of research tourism practical education helps the development of cultural tourism industry
Using webassembly to operate excel on the browser side
五层网络协议
Binary search
vant 源码解析之 utils/index.ts 工具函数
Duchefa p1001 plant agar Chinese and English instructions