当前位置:网站首页>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;
}
边栏推荐
- Norgen AAV extractant box instructions (including features)
- PVC 塑料片BS 476-6 火焰传播性能测定
- ODPs next map / reduce preparation
- Popular science | does poor English affect the NPDP exam?
- Viewrootimpl and windowmanagerservice notes
- ODPS 下一个map / reduce 准备
- 大二下个人发展小结
- 字典树简单入门题(居然是蓝题?)
- Generics of TS
- Simple getting started example of Web Service
猜你喜欢

Write an interface based on flask

MySQL InnoDB架构原理

EN 438-7建筑覆盖物装饰用层压板材产品—CE认证

教你自己训练的pytorch模型转caffe(一)

2. < tag hash table, string> supplement: Sword finger offer 50 The first character DBC that appears only once

phpstudy小皮的mysql点击启动后迅速闪退,已解决

渗透创客精神文化转化的创客教育

五层网络协议

显示屏DIN 4102-1 Class B1防火测试要求

Analyze the knowledge transfer and sharing spirit of maker Education
随机推荐
100 cases of shell programming
Influence of oscilloscope probe on measurement bandwidth
Typhoon is coming! How to prevent typhoons on construction sites!
matplotlib绘图润色(如何形成高质量的图,例如设如何置字体等)
Generics of TS
获取前一天的js(时间戳转换)
ArcGIS栅格重采样方法介绍
haas506 2.0开发教程 - 阿里云ota - pac 固件升级(仅支持2.2以上版本)
请查收.NET MAUI 的最新学习资源
研学旅游实践教育的开展助力文旅产业发展
The development of research tourism practical education helps the development of cultural tourism industry
基于AVFoundation实现视频录制的两种方式
Web Service简单入门示例
Viewrootimpl and windowmanagerservice notes
2.<tag-哈希表, 字符串>补充: 剑指 Offer 50. 第一个只出现一次的字符 dbc
MySQL InnoDB架构原理
LeetCode: Distinct Subsequences [115]
EN 438-7建筑覆盖物装饰用层压板材产品—CE认证
ArcGIS\QGIS无插件加载(无偏移)MapBox高清影像图
poj 3414 Pots (bfs+线索)