BZOJ2754 SCOI2012喵星球上的点名
绝世好题。
正当我犹豫不决时,hzwer说:“MAP!!!”
没错这题大大的暴力,生猛的stl,贼基尔爽,,ԾㅂԾ,,
由于我们求点名在名字中的子串个数,所以将点名建AC自动机,记录节点属于哪次点名,每次带着这位同学的所有名字去里面扫,注意判重
复杂度20000*100000以及玄学的stl复杂度。
By:大奕哥
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+;
int ans1[N],ans2[N],fail[N],n,m,cnt;
map<int,int>t[N];
vector<int>pos[N],a[N];
queue<int>q;
void build(int id)
{
int x,k;scanf("%d",&x);int now=;
for(int i=;i<=x;++i)
{
scanf("%d",&k);
if(!t[now][k])t[now][k]=++cnt;
now=t[now][k];
}
pos[now].push_back(id);
}
void getfail()
{
for(map<int,int>::iterator i=t[].begin();i!=t[].end();++i)
{
int u=i->second;
q.push(u);
fail[u]=;
}
while(!q.empty())
{
int x=q.front();q.pop();
for(map<int,int>::iterator i=t[x].begin();i!=t[x].end();++i)
{
int c=i->first,u=i->second;
q.push(u);
int k=fail[x];
while(k&&!t[k][c])k=fail[k];
fail[u]=t[k][c];
}
}
}
bool v[N],mark[N];
vector<int>H,M;
void get(int x,int p)
{
for(int i=p;i;i=fail[i])
{
if(v[i])return;
v[i]=;H.push_back(i);
for(int j=;j<pos[i].size();++j)
if(!mark[pos[i][j]])
{
mark[pos[i][j]]=;
ans1[pos[i][j]]++;
ans2[x]++;
M.push_back(pos[i][j]);
}
}
return;
}
void find(int x,vector<int>g)
{
int ans=,now=,l=g.size();
for(int i=;i<l;++i)
{
int c=g[i];
while(now&&!t[now][c])now=fail[now];
now=t[now][c];
get(x,now);
}
for(int i=;i<H.size();++i)v[H[i]]=;
for(int i=;i<M.size();++i)mark[M[i]]=;
H.clear();M.clear();
return;
}
int main()
{
scanf("%d%d",&n,&m);int x,k;
for(int i=;i<=n;++i)
{
scanf("%d",&x);
for(int j=;j<=x;++j)
scanf("%d",&k),a[i].push_back(k);
a[i].push_back(-);//添加非法字符防止姓和名连在一起成一个子串
scanf("%d",&x);
for(int j=;j<=x;++j)
scanf("%d",&k),a[i].push_back(k);
}
for(int i=;i<=m;++i)build(i);
getfail();
for(int i=;i<=n;++i)
find(i,a[i]);
for(int i=;i<=m;++i)printf("%d\n",ans1[i]);
for(int i=;i<n;++i)printf("%d ",ans2[i]);
printf("%d",ans2[n]);
return ;
}
BZOJ2754 SCOI2012喵星球上的点名的更多相关文章
- BZOJ2754: [SCOI2012]喵星球上的点名
2754: [SCOI2012]喵星球上的点名 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 680 Solved: 314[Submit][Sta ...
- [BZOJ2754] [SCOI2012]喵星球上的点名解题报告|后缀数组
a180285幸运地被选做了地球到喵星球的留学生.他发现喵星人在上课前的点名现象非常有趣. 假设课堂上有N个喵星人,每个喵星人的名字由姓和名构成.喵星球上的老师会选择M个串来点名,每次读出一个串的 ...
- bzoj2754:[SCOI2012]喵星球上的点名(后缀自动机)
Description a180285幸运地被选做了地球到喵星球的留学生.他发现喵星人在上课前的点名现象非常有趣. 假设课堂上有N个喵星人,每个喵星人的名字由姓和名构成.喵星球上的老师会选择M个串 ...
- BZOJ2754: [SCOI2012]喵星球上的点名(AC自动机)
Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 2816 Solved: 1246[Submit][Status][Discuss] Descript ...
- BZOJ2754: [SCOI2012]喵星球上的点名(AC自动机/后缀自动机)
Description a180285幸运地被选做了地球到喵星球的留学生.他发现喵星人在上课前的点名现象非常有趣. 假设课堂上有N个喵星人,每个喵星人的名字由姓和名构成.喵星球上的老师会选择M个串 ...
- BZOJ2754 [SCOI2012]喵星球上的点名 SA+莫队+树状数组
题面 戳这里 题解 首先先把所有给出的姓名和询问全部接在一起,建出\(height\)数组. 某个串要包含整个询问串,其实就相当于某个串与询问串的\(lcp\)为询问串的长度. 而两个后缀\(Suff ...
- 【BZOJ2754】[SCOI2012]喵星球上的点名
[BZOJ2754][SCOI2012]喵星球上的点名 题面 bzoj 洛谷 题解 这题有各种神仙做法啊,什么暴力\(AC\)自动机.\(SAM\)等等五花八门 我这个蒟蒻在这里提供一种复杂度正确且常 ...
- BZOJ 2754: [SCOI2012]喵星球上的点名
2754: [SCOI2012]喵星球上的点名 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 649 Solved: 305[Submit][Sta ...
- BZOJ 2754: [SCOI2012]喵星球上的点名 [后缀数组+暴力]
2754: [SCOI2012]喵星球上的点名 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1906 Solved: 839[Submit][St ...
随机推荐
- 【Atcoder】ARC088 D - Wide Flip
[题目]D - Wide Flip [题意]给定n个数字的01序列,要求每次翻转>=k个数字使得全0,求最大的k.n<=10^5 [算法]数学 [题解]有两个角度可以得到等价的结论: 1. ...
- ftp,nfs和samba的区别
先从名字上进行理解: 1. FTP(文件传输协议) 2. NFS(网络文件系统) 3. samba 即smb(服务信息块)协议 1 其中FTP 是TCP/IP协议栈所提供的一种子协议,该子协议具体可以 ...
- python RSA加密解密及模拟登录cnblog
1.公开密钥加密 又称非对称加密,需要一对密钥,一个是私人密钥,另一个则是公开密钥.公钥加密的只能私钥解密,用于加密客户上传数据.私钥加密的数据,公钥可以解密,主要用于数字签名.详细介绍可参见维基百科 ...
- mysql 操作时间戳
1.将long显示成时间 SELECT FROM_UNIXTIME(1249488000, '%Y%m%d' ) 2.日期格式化成时间戳 SELECT UNIX_TIMESTAMP('2016-05- ...
- Linux打补丁的一些问题
linuxpatchlinux内核文档commandheader类unix操作系统有一个很有趣的特性就是源代码级的补丁包.在windows上我们打补丁都是运行一个可执行的程序,然后就可以把补丁打完了, ...
- LightOJ 1414 February 29(闰年统计+容斥原理)
题目链接:https://vjudge.net/contest/28079#problem/R 题目大意:给你分别给你两个日期(第二个日期大于等于第一个日期),闰年的2月29日称为闰日,让你求两个日期 ...
- Django之管理权限
什么是权限: 谁对什么资源能做什么操作. 管理权限的实现有很多,这里实现一个最简单的管理权限的实现方式:rbac ( role based access control ) 实现的一个基本思路: ...
- 深度学习方法(十):卷积神经网络结构变化——Maxout Networks,Network In Network,Global Average Pooling
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 最近接下来几篇博文会回到神经网络结构 ...
- centos6下mysql的主从复制的配置
2015年9月17日 23:00:36 update 想要好好了解mysql复制,还是去看看<高性能MySQL>(第三版)好了,上面说的比较详细. =========== 在本地用virt ...
- 解决IE的背景颜色透明子元素不透明问题
假设背景为黑色,70%半透明,对需要半透明的层用如下CSS background-color: #000000; /* background color for IE */ filter: alpha ...