当前位置:网站首页>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;
}
边栏推荐
- Maker education infiltrating the transformation of maker spirit and culture
- 研学旅游实践教育的开展助力文旅产业发展
- LeetCode_哈希表_困难_149. 直线上最多的点数
- Careercup its 1.8 serial shift includes problems
- Abnova blood total nucleic acid purification kit pre installed relevant instructions
- Duchefa s0188 Chinese and English instructions of spectinomycin hydrochloride pentahydrate
- 获取前一天的js(时间戳转换)
- Abnova e (diii) (WNV) recombinant protein Chinese and English instructions
- Sequence alignment
- 解析创客教育的知识迁移和分享精神
猜你喜欢
Duchefa cytokinin dihydrozeatin (DHZ) instructions
Return to blowing marshland -- travel notes of zhailidong, founder of duanzhitang
研學旅遊實踐教育的開展助力文旅產業發展
leetcode:1755. 最接近目标值的子序列和
phpstudy小皮的mysql点击启动后迅速闪退,已解决
XML建模
Abnova DNA marker high quality control test program
示波器探头对信号源阻抗的影响
从架构上详解技术(SLB,Redis,Mysql,Kafka,Clickhouse)的各类热点问题
解析创客教育的知识迁移和分享精神
随机推荐
SQL series (basic) - Chapter 2 limiting and sorting data
浅聊我和一些编程语言的缘分
Monorepo management methodology and dependency security
Abnova e (diii) (WNV) recombinant protein Chinese and English instructions
模式-“里氏替换原则”
WPF gets the control in the datagridtemplatecolumn of the specified row and column in the DataGrid
Analyze the knowledge transfer and sharing spirit of maker Education
ClickHouse 复制粘贴多行sql语句报错
LeetCode: Distinct Subsequences [115]
基于flask写一个接口
haas506 2.0开发教程 - 阿里云ota - pac 固件升级(仅支持2.2以上版本)
Specification of protein quantitative kit for abbkine BCA method
Enclosed please find. Net Maui's latest learning resources
Chemical properties and application instructions of prosci Lag3 antibody
Norgen AAV extractant box instructions (including features)
Deep merge object deep copy of vant source code parsing
显示器要申请BS 476-7 怎么送样?跟显示屏一样吗??
Abnova cyclosporin a monoclonal antibody and its research tools
ViewRootImpl和WindowManagerService笔记
Which is the best online collaboration product? Microsoft loop, notion, flowus