绝世好题。

正当我犹豫不决时,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喵星球上的点名的更多相关文章

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

    2754: [SCOI2012]喵星球上的点名 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 680  Solved: 314[Submit][Sta ...

  2. [BZOJ2754] [SCOI2012]喵星球上的点名解题报告|后缀数组

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

  3. bzoj2754:[SCOI2012]喵星球上的点名(后缀自动机)

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

  4. BZOJ2754: [SCOI2012]喵星球上的点名(AC自动机)

    Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 2816  Solved: 1246[Submit][Status][Discuss] Descript ...

  5. BZOJ2754: [SCOI2012]喵星球上的点名(AC自动机/后缀自动机)

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

  6. BZOJ2754 [SCOI2012]喵星球上的点名 SA+莫队+树状数组

    题面 戳这里 题解 首先先把所有给出的姓名和询问全部接在一起,建出\(height\)数组. 某个串要包含整个询问串,其实就相当于某个串与询问串的\(lcp\)为询问串的长度. 而两个后缀\(Suff ...

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

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

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

    2754: [SCOI2012]喵星球上的点名 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 649  Solved: 305[Submit][Sta ...

  9. BZOJ 2754: [SCOI2012]喵星球上的点名 [后缀数组+暴力]

    2754: [SCOI2012]喵星球上的点名 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1906  Solved: 839[Submit][St ...

随机推荐

  1. [php]修改站点的虚拟目录

    wamp默认的站点的目录是www的目录,可以修改appache的httpd.conf文件来修改目录,修改方法如下: 1. <Directory "D:/SoftWare/wamp/ww ...

  2. 【计蒜客】是男人就过 8 题--Pony.AI 题 A. A String Game 后缀自动机+SG函数

    [题目]A. A String Game [题意]给定目标串S和n个子串Ti,Alice和Bob轮流选择一个子串操作,必须且只能在子串末尾添加一个字符使得新串也是S的子串,不能操作即输,求胜利者.|S ...

  3. HttpUtility.UrlEncode与Server.UrlEncode()转码区别

    在对URL进行编码时,该用哪一个?这两都使用上有什么区别吗?测试: string file="文件上(传)篇.doc";string Server_UrlEncode=Server ...

  4. 天梯赛 L2-010 排座位 (并查集)

    布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席. 输入格式: ...

  5. Solaris 系统命令使用说明

    1. 查看进程  --  pgreproot@UA4300D-spa:~# pgrep fmd133095root@UA4300D-spa:~# pgrep -l fmd133095 fmdroot@ ...

  6. 黑色的网站后台管理系统ui界面——后台

    链接:http://pan.baidu.com/s/1pLffwE3 密码:m4v6

  7. Java Web 远程调试

    Java Web 远程 调试 Tomcat 下载压缩版服务器 环境:Tomcat.Eclipse,做远程调试我们并不需要其他特殊插件 1.配置Tomcat/bin/startup.bat 在前面增加代 ...

  8. sshpass-免交互SSH登录工具

    sshpass用于自动向命令行提供密码,适用于ssh,scp,rsync,pssh,pscp等ssh系列的命令和工具 #安装sshpass yum install sshpass -y #注:当第一次 ...

  9. .pnts点云

    一种3d tiles格式 MIME格式: <configuration> <system.webServer> <staticContent> <remove ...

  10. 设计模式--工厂模式 caffe_layer注册

    来源:http://www.cnblogs.com/zhouqiang/archive/2012/07/20/2601365.html 来源:http://blog.luoyetx.com/2016/ ...