\(\color{#0066ff}{ 题目描述 }\)

英语老师留了N篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过。

\(\color{#0066ff}{输入格式}\)

第一行为整数N,表示短文篇数,其中每篇短文只含空格和小写字母。

按下来的N行,每行描述一篇短文。每行的开头是一个整数L,表示这篇短文由L个单词组成。接下来是L个单词,单词之间用一个空格分隔。

然后为一个整数M,表示要做几次询问。后面有M行,每行表示一个要统计的生词。

\(\color{#0066ff}{输出格式}\)

对于每个生词输出一行,统计其在哪几篇短文中出现过,并按从小到大输出短文的序号,序号不应有重复,序号之间用一个空格隔开(注意第一个序号的前面和最后一个序号的后面不应有空格)。如果该单词一直没出现过,则输出一个空行。

\(\color{#0066ff}{输入样例}\)

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

\(\color{#0066ff}{输出样例}\)

1 2 3
2 3
1 2
3
2

\(\color{#0066ff}{数据范围与提示}\)

对于30%的数据,1 ≤ M ≤ 1,000

对于100%的数据,1 ≤ M ≤ 10,000,1 ≤ N ≤ 1000

每篇短文长度(含相邻单词之间的空格) ≤ 5,000 字符,每个单词长度 ≤ 20 字符

\(\color{#0066ff}{ 题解 }\)

对所有单词建立Trie树,每个点维护一个set,代表属于哪一行

匹配到的时候扫一遍set就行了

#include<bits/stdc++.h>
#define LL long long
LL in() {
char ch; LL x = 0, f = 1;
while(!isdigit(ch = getchar()))(ch == '-') && (f = -f);
for(x = ch ^ 48; isdigit(ch = getchar()); x = (x << 1) + (x << 3) + (ch ^ 48));
return x * f;
}
using std::set;
struct Trie {
protected:
struct node {
node *ch[26];
set<int> s;
node() {
memset(ch, 0, sizeof ch);
s.clear();
}
void *operator new (size_t) {
static node *S = NULL, *T = NULL;
return (S == T) && (T = (S = new node[1024]) + 1024), S++;
}
};
node *root;
public:
Trie() { root = new node(); }
void ins(char *s, int id) {
node *o = root;
for(char *p = s; *p; p++) {
int pos = *p - 'a';
if(!o->ch[pos]) o->ch[pos] = new node();
o = o->ch[pos];
}
o->s.insert(id);
}
void query(char *s) {
node *o = root;
for(char *p = s; *p; p++) {
int pos = *p - 'a';
if(o->ch[pos]) o = o->ch[pos];
else goto noans;
}
for(auto &k : o->s) printf("%d ", k);
noans:;
puts("");
}
}T;
char s[500];
int main() {
int n = in();
for(int i = 1; i <= n; i++) {
int k = in();
for(int j = 1; j <= k; j++) {
scanf("%s", s);
T.ins(s, i);
}
}
for(int m = in(); m --> 0;) {
scanf("%s", s);
T.query(s);
}
return 0;
}

P3879 [TJOI2010]阅读理解的更多相关文章

  1. P3879 [TJOI2010]阅读理解 题解

    P3879 [TJOI2010]阅读理解 题解 题目描述 英语老师留了N篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过. 输 ...

  2. 洛谷 P3879 [TJOI2010]阅读理解

    P3879 [TJOI2010]阅读理解 题目描述 英语老师留了N篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过. 输入输出 ...

  3. 【luogu P3879 [TJOI2010]阅读理解】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3879 我先说一句: 我永远都喜欢StellaSTL 这个题,很明显就是 trie树 hash map+vec ...

  4. Trie树【洛谷P3879】 [TJOI2010]阅读理解

    P3879 [TJOI2010]阅读理解 题目描述 英语老师留了N篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过. 输入输出 ...

  5. Trie树【P3879】 [TJOI2010]阅读理解

    Description 英语老师留了N篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过. Input 第一行为整数N,表示短文 ...

  6. Luogu P3879 【[TJOI2010]阅读理解】

    前言: 这个题一直有个疑问,最多一千行,每行五千字$1000\times5000=5e6$ $5e6\times26\times4\div1024\div1024\approx496Mb>125 ...

  7. LGOJ3879 TJOI2010 阅读理解

    不可否认,\(TJOI\)的这道题确实不难 为本题写博客的唯一原因就是 \(STL\)大法好!!!! Description link 不简述题意了,因为实在是简单 Solution 直接\(map& ...

  8. HTTPS强制安全策略-HSTS协议阅读理解

    https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security [阅读理解式翻译,非严格遵循原 ...

  9. Codeforces#543 div2 A. Technogoblet of Fire(阅读理解)

    题目链接:http://codeforces.com/problemset/problem/1121/A 真·阅读理解 题意就是 有n个人 pi表示他们的强度 si表示他们来自哪个学校 现在Arkad ...

随机推荐

  1. pyodbc连接MySQL数据库

    1:Python安装pyodbc:pip install pyodbc 2:安装unixODBC-2.3.4.tar.gz ./configure make make install 3:下载基于py ...

  2. Oracle Management Packs

    http://kerryosborne.oracle-guy.com/2008/10/oracle-management-packs/ There has been quite a bit of co ...

  3. javaScript之NodeList

    NodeList对象 是DOM操作取出的集合(实际上是基于DOM结构动态查询的结果),用来保存一组有序的节点,可以通过位置来访问这些节点,它并不是array的实例. Nodelist最大的特点就是它的 ...

  4. URL网址参数解析类

    /** * Created by myc on 2015/12/9. */ import android.text.TextUtils; import java.util.HashMap; impor ...

  5. python笔记--3--函数、生成器、装饰器、函数嵌套定义、函数柯里化

    函数 函数定义语法: def 函数名([参数列表]): '''注释''' 函数体 函数形参不需要声明其类型,也不需要指定函数返回值类型 即使该函数不需要接收任何参数,也必须保留一对空的圆括号 括号后面 ...

  6. jQuery-图片的放大镜显示效果(需要大小图)

    1.default.aspx <%@ Page Language=.2em; height:.1em; text-align:center; font-size:128px;}    .zxx_ ...

  7. TabHost两种不同的实现方式

    第一种:继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost.只要定义具体Tab内容布局就行了 第二种:不用继承TabActivity,在布局文件中定 ...

  8. Codeforces 1137C Museums Tour (强连通分量, DP)

    题意和思路看这篇博客就行了:https://www.cnblogs.com/cjyyb/p/10507937.html 有个问题需要注意:对于每个scc,只需要考虑进入这个scc的时间即可,其实和从哪 ...

  9. [转]怎么学习前端,尤其是 JavaScript 这块

    1. 先看看 w3school ,了解什么是 js,再找几本写 js 小效果的书看看,知道 js 干什么: 2. 然后再去通读 API,推荐 <Javascript权威指南>,第四版吧,第 ...

  10. vue插件开发与发布

    vue插件的规范 / plug.js Toast={}Toast.install=function(){ Vue.prototype.$toast=function(){ }} // 导出这个对象 e ...