虽然处理起来有些麻烦,但最后还是过了

虽然1~10000 非常大,正常的遍历是10^9的

而总长度<10^5  所以就用vector存下面的子节点了、

在判断有没有子节点时用map就好

同时用数组存每个句子的结束点是哪个句子(可能有多个句子相同节点,所以vector)

然后把每一只喵的 姓扔进去统计答案,同时把匹配的串的一个值 赋成当前喵的编号,这样遇到相同的值就避开,就使得这些串只会被一只喵匹配一次

名同理、

每到一个节点不仅要统计这个节点的贡献,还要统计失配的贡献,因为后缀也有可能是一个句子

统计答案输出即可

这样的复杂度其实是不科学的,因为跳失配实际上有可能是n的   但好像还是过了,应该是数据没有特别去卡

注:不要打错板子:忘了shipei()    忘了q.push()   忘了o=ch【o】【zm】

码:

#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
#include<queue>
using namespace std;
#define N 100005
map<int,int>ch[N];
queue<int>q;
vector<int>ci[N],v[N],mz[N][2];
int sz=1,l,str[N];
int sp[N],ans[N],zh[N],ans2[N],i,n,m;
void jia(int x)
{int o=1; for(int i=1;i<=l;i++)
{
int zm=str[i];
if(ch[o][zm]==0)
ch[o][zm]=++sz,v[o].push_back(zm);
o=ch[o][zm];
}   ci[o].push_back(x);
}
void shipei()
{q.push(1);int i;while(!q.empty())
{int i;int st=q.front();q.pop();for(i=0;i<v[st].size();i++){int nd=v[st][i];int k=sp[st];while(ch[k][nd]==0)k=sp[k];sp[ch[st][nd]]=ch[k][nd];q.push(ch[st][nd]);}
}
}void pp(int x)
{int i,o=1;for(i=0;i<mz[x][0].size();i++){int zm=mz[x][0][i];while(ch[o][zm]==0)o=sp[o];o=ch[o][zm];int woc=o;while(woc>0){for(int j=0;j<ci[woc].size();j++)  {int p=ci[woc][j];if(zh[p]==x)break;zh[p]=x;ans[p]++;ans2[x]++;}woc=sp[woc];
}}o=1;for(i=0;i<mz[x][1].size();i++){int zm=mz[x][1][i];while(ch[o][zm]==0)o=sp[o];o=ch[o][zm];int woc=o;while(woc>0){for(int j=0;j<ci[woc].size();j++)   {int p=ci[woc][j];if(zh[p]==x)break;zh[p]=x;ans[p]++;ans2[x]++;}woc=sp[woc];
}}
}int main()
{int c;for(i=0;i<=10000;i++)ch[0][i]=1;scanf("%d%d",&n,&m);for(i=1;i<=n;i++){scanf("%d",&l);for(int j=1;j<=l;j++)scanf("%d",&c),mz[i][0].push_back(c);scanf("%d",&l);for(int j=1;j<=l;j++)scanf("%d",&c),mz[i][1].push_back(c);  }for(i=1;i<=m;i++){scanf("%d",&l);for(int j=1;j<=l;j++)scanf("%d",&str[j]);jia(i);}   shipei();for(i=1;i<=n;i++){pp(i);}for(i=1;i<=m;i++){printf("%d\n",ans[i]);}for(i=1;i<n;i++){printf("%d ",ans2[i]);}printf("%d",ans2[n]);
}

2017.8.16 喵星球上的点名 思考记录相关推荐

  1. BZOJ 2754: [SCOI2012]喵星球上的点名

    二次联通门 : BZOJ 2754: [SCOI2012]喵星球上的点名 /*BZOJ 2754: [SCOI2012]喵星球上的点名此题有N种做法...见到众dalao用各种奇怪的姿势AC此题..具 ...

  2. 喵星球上的点名(后缀自动机+dfs序+莫队)

    喵星球上的点名 一道据传言有多种解法的题(不过大多是因为数据太弱过的).先用AC自动机搞了一上午,无果:看了题解,后缀自动机+莫队?正好是我最喜欢的算法之一+正在学习的算法,就这个了!然后由于广义自动 ...

  3. 洛谷 P2336 [SCOI2012]喵星球上的点名 解题报告

    P2336 [SCOI2012]喵星球上的点名 题目描述 a180285 幸运地被选做了地球到喵星球的留学生.他发现喵星人在上课前的点名现象非常有趣. 假设课堂上有 \(N\) 个喵星人,每个喵星人的 ...

  4. 【BZOJ2754】【SCOI2012】喵星球上的点名(后缀数组)

    Description click me Solution 据说AC自动机可做?反正我使用后缀数组做的.. 把所有的串连在一起,用一个很大的数分割开来. 求出后缀数组,暴力地在height上找可以匹配 ...

  5. SCOI2012 喵星球上的点名 BZOJ 2754

    2754: [SCOI2012]喵星球上的点名 Time Limit: 20 Sec Memory Limit: 128 MB Submit: 2246 Solved: 975 Description ...

  6. 【BZOJ2754】[SCOI2012]喵星球上的点名

    [BZOJ2754][SCOI2012]喵星球上的点名 题面 bzoj 洛谷 题解 这题有各种神仙做法啊,什么暴力\(AC\)自动机.\(SAM\)等等五花八门 我这个蒟蒻在这里提供一种复杂度正确且常 ...

  7. 【SCOI2012】喵星球上的点名

    [SCOI2012]喵星球上的点名 Description 给出n个模式串,m个文本串,每个模式串由两部分组成,我们认为一个模式串被一个文本串包含只要这个文本串包含它的两部分中的其中一部分的子串.求每 ...

  8. bzoj2754【SCOI2012】喵星球上的点名

    2754: [SCOI2012]喵星球上的点名 Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 1577  Solved: 710 [Submit][ ...

  9. 2754. [SCOI2012]喵星球上的点名【后缀数组】

    Description a180285幸运地被选做了地球到喵星球的留学生.他发现喵星人在上课前的点名现象非常有趣.   假设课堂上有N个喵星人,每个喵星人的名字由姓和名构成.喵星球上的老师会选择M个串 ...

最新文章

  1. 11、集合--Set接口
  2. BERT模型从训练到部署全流程
  3. 解决ubuntu上ifconfig没有eth0/ens33且无法上网的问题
  4. SpringBoot------8080端口被占用抛出异常
  5. java MD5 并发
  6. 面试体验:Facebook 篇(转)
  7. C#机器学习之判断日报是否合格
  8. 为什么TCP是三次握手
  9. 循序渐进Oracle:数据库的字符集和字符集文件
  10. IntelliJIDEA和tomcat在浏览器js乱码问题解决
  11. C语言的很吊的printf-----来自一个C语言竞赛题目
  12. ssh详细原理流程及配置
  13. 【思维导图】幕布大纲至Xmind思维导图
  14. VS C#语言获取输入名称的汉语拼音简拼码和全拼码完整案例教程
  15. 摔了 计算机无法启动,电脑被摔后不能进系统,我说重装系统试试,客户:系统能被摔坏?...
  16. 网站域名备案需要怎么做?
  17. eclipse下改变 匹配标签和匹配括号的颜色
  18. 转叶寒栋分享:方舟支持C语言编译新功能开源啦!
  19. android 定时截图,这款 APP 让我每天都忍不住想发截图!
  20. 什么蓝牙耳机适合打游戏?打游戏不延迟的蓝牙耳机推荐

热门文章

  1. kohana php,[php框架]kohana中文译本.pdf
  2. window10安装oracle VirtualBox 虚拟机+ubuntu16.04安装Ros
  3. PreScan中对象沿预设轨迹运动的若干方式介绍
  4. mysql本周数据没有填充_MySql查询本周、本月、本年数据(没有数据则补全0)
  5. python中str函数_python字符串str的常用函数
  6. pc,移动端局域网文件共享
  7. python制作图片墙_利用python生成照片墙的示例代码
  8. c++ 二维数组_二维数组的声明2019_04_18
  9. iPhone上传文件到ftp服务器,将文件上传到iPhone上的FTP服务器
  10. 决策树对鸢尾花数据两特征组合分类python代码的结果_机器学习笔记-决策树