Description

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

Input

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

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

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

Output

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

裸的\(Trie\)树,结果被卡空间???

搞得要开\(bitset\)。

我们对于每一个位置记录其在哪出现过。

我们记录\(b[x][i]\)代表当前这个单词的结尾\(x\)是否在\(i\)行出现过。

最后查询的时候直接枚举即可。

代码

#include<cstdio>
#include<bitset>
#include<iostream>
#include<algorithm>
#define R register using namespace std; const int gz=300001; inline void in(int &x)
{
int f=1;x=0;char s=getchar();
while(!isdigit(s)){if(s=='-')f=-1;s=getchar();}
while(isdigit(s)){x=x*10+s-'0';s=getchar();}
x*=f;
} int ch[gz][26],idx,n,m; bitset<1001> b[gz]; char s[31]; inline void insert(R char *s,R int x)
{
R int u=0;
for(R int i=0;s[i];i++)
{
R int v=s[i]-'a';
if(!ch[u][v])ch[u][v]=++idx;
u=ch[u][v];
}
b[u][x]=true;
} inline void query(R char *s)
{
R int u=0;
for(R int i=0;s[i];i++)
{
R int v=s[i]-'a';
if(!ch[u][v]){goto he;}
u=ch[u][v];
}
for(R int i=1;i<=n;i++)
if(b[u][i])printf("%d ",i);
he :;
puts("");
} int main()
{
in(n);
for(R int i=1,x;i<=n;i++)
{
in(x);
for(R int j=1;j<=x;j++)
{
scanf("%s",s);
insert(s,i);
}
}
in(m);
for(R int i=1;i<=m;i++)
{
scanf("%s",s);
query(s);
}
}

最新文章

  1. swift-Array(数组)
  2. 动态设置AndroidManifest.xml文件中的meta-data
  3. PHP 的__call()
  4. [ThinkPHP]MVC模块和URL访问
  5. IT公司100题-18-圆圈中最后剩下的数字
  6. 2015GitWebRTC编译实录2
  7. 下载网址 wMware
  8. javascript获取对象宽度和高度
  9. python面向对象编程对象和实例的理解
  10. Java中继承与多态
  11. Neutron控制节点集群
  12. ngRx 官方示例分析 - 5. components
  13. Android自定义View(二、深入解析自定义属性)
  14. Redis数据过期和淘汰策略详解(转)
  15. BZOJ_3261_最大异或和_可持久化trie
  16. web测试之功能测试总结
  17. 19.3.5日,报关于表单验证和ui-router
  18. Android 杂谈---帧动画
  19. springBoot(8)---整合redis
  20. Scrapy基础(七)————图片的简单下载

热门文章

  1. HDU 5868 Different Circle Permutation Burnside引理+矩阵快速幂+逆元
  2. Java面试题整理二
  3. SVG 基本绘图方法总结
  4. bzoj 2705: [SDOI2012]Longge的问题——欧拉定理
  5. Linux 命令行生成密码的 10 种方式
  6. Python面向对象学习2(面向对象的语法和特性,待更新)
  7. 一个基于时间注入的perl小脚本
  8. Linux 入门记录:二、Linux 文件系统基本结构
  9. python基础===多进程
  10. 0x3F3F3F3F——ACM中的无穷大常量