当前位置:网站首页>[dictionary tree] [trie] p3879 [tjoi2010] reading comprehension
[dictionary tree] [trie] p3879 [tjoi2010] reading comprehension
2022-07-06 07:23:00 【Chasing the beacon】
P3879 [TJOI2010] reading comprehension
Dictionary tree writing
#include<bits/stdc++.h>
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
using namespace std;
int nex[300007][26],n,cnt=0;
bitset<1001> b[500007];//bool b[500007][1001];
void insert(char* s,int rol){
int len=strlen(s+1);
int now=0;
FOR(i,1,len){
int p=s[i]-'a';
if(!nex[now][p])// If $Trie$ The tree is numbered without the prefix of this word
nex[now][p]=++cnt;// The number mentioned above
now=nex[now][p];// Then go deeper , Update the current location
}
b[now][rol]=1;// This word is in the x There's a line
}
void check(char* s){
int len=strlen(s+1);
int now=0,flag=1;
FOR(i,1,len){
int p=s[i]-'a';
if(!nex[now][p]){
// If in Trie There is no current character in the tree , You can do it directly break It fell off
flag=0;
break;
}
now=nex[now][p];// Otherwise, update the location
}
if(flag){
FOR(i,1,n)// On the surface of the question, it is said to output in dictionary order
if(b[now][i]) cout<<i<<" ";// In which sentences does the output appear
}
putchar('\n');
}
int main(){
cin>>n;
char s[25];
FOR(i,1,n){
int l;cin>>l;
FOR(j,1,l){
// Word by word insertion Trie In the tree
cin>>(s+1);
insert(s,i);
}
}
int m;cin>>m;
FOR(i,1,m){
cin>>(s+1);
check(s);
}
return 0;
}
STL: MAP + VECTOR How to write it
use STL You don't have to worry about how big the array is and how big the space is , But it will take more time
#include<bits/stdc++.h>
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
#define mem(a) memset(a,0,sizeof(a))
using namespace std;
const int maxn = 100001;
int n,m,num,cnt[maxn];
string s;
map<string,vector<int> >a;
int main(){
cin>>n;
FOR(i,1,n){
cin>>num;
FOR(j,1,num){
cin>>s;
a[s].push_back(i);// Every word is a vector, Save the number of sentences
}
}
cin>>m;
FOR(i,1,m){
cin>>s;
mem(cnt);//cnt Is to remove the heavy bucket . Every time you use it to output different queries, you need to clear .
int len=a[s].size();
FOR(j,0,len-1)
if(cnt[a[s][j]] == 0){
cout<<a[s][j]<<" ";
cnt[a[s][j]]++;// Remove weight with bucket
}
cout<<endl;
}
return 0;
}
STL: MAP + SET How to write it
use set It can automatically remove the weight , More convenient . meanwhile Time consuming is excellent , Second only to handwriting Trie
#include<bits/stdc++.h>
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
using namespace std;
map<string,set<int> > m;
int main(){
int n,p,l;
string s;
cin>>n;
FOR(i,1,n){
cin>>l;// The number of words
FOR(j,0,l-1){
cin>>s;// word
m[s].insert(i);
}
}
cin>>p;
while(p--){
cin>>s;
if(m.count(s)){
// If m There are elements in s
for(auto iter=m[s].begin();iter!=m[s].end();++iter)
cout<<*iter<<" ";
}
cout<<endl;
}
return 0;
}
边栏推荐
- js对象获取属性的方法(.和[]方式)
- Project GFS data download
- JDBC学习笔记
- TypeScript 可索引类型
- The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
- The author is dead? AI is conquering mankind with art
- If Jerry's Bluetooth device wants to send data to the mobile phone, the mobile phone needs to open the notify channel first [article]
- The best way to learn SEO: search engine
- Uni app third party package configuration network request
- Seriously recommend several machine learning official account
猜你喜欢

Leetcode 78: subset

jmeter性能测试步骤实战教程

Cookie Technology & session Technology & ServletContext object

The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower

Wechat official account infinite callback authorization system source code, launched in the whole network

Go learning -- implementing generics based on reflection and empty interfaces

JDBC learning notes

L'auteur est mort? Ai utilise l'art pour conquérir l'humanité

作者已死?AI正用藝術征服人類

树莓派3B更新vim
随机推荐
How are the open source Netease cloud music API projects implemented?
Multi attribute object detection on rare aircraft data sets: experimental process using yolov5
The author is dead? AI is conquering mankind with art
Select all the lines with a symbol in word and change them to titles
word中如何删除某符号前面或后面所有的文字
Jerry's general penetration test - do data transmission with app Communication [article]
You deserve this high-value open-source third-party Netease cloud music player
Typescript variable scope
Typescript interface properties
杰理之BLE【篇】
If Jerry needs to send a large package, he needs to modify the MTU on the mobile terminal [article]
Typescript void base type
变量的命名规则十二条
Jerry needs to modify the profile definition of GATT [chapter]
The first Baidu push plug-in of dream weaving fully automatic collection Optimization SEO collection module
C - Inheritance - polymorphism - virtual function member (lower)
Typescript interface and the use of generics
1091: two or three things in childhood (multi instance test)
Idea console color log
多线程和并发编程(二)