传送门

事实证明,我肉眼debug了两个晚上,还是不及对拍效率高。

AC自动机写错了都毫不自觉的智障宸

因为数据水,写的暴力

//Achen
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<cstdio>
#include<queue>
#include<cmath>
#include<map>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
const int N=400007;
typedef long long LL;
using namespace std;
int n,m,a[N],ll[N],rr[N],ans2[N],cnt[N];template<typename T>void read(T &x)  {char ch=getchar(); x=0; T f=1;while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();if(ch=='-') f=-1,ch=getchar();for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0'; x*=f;
}map<int,int>ch[N];
#define IT map<int,int>::iterator
int tot,rt,w[N],fail[N],ans[N];
void insert(int ql,int qr) {if(!rt) rt=++tot;int x=rt;For(i,ql,qr) {int c=a[i];if(!ch[x][c]) ch[x][c]=++tot;x=ch[x][c];} w[x]++;
}queue<int>que;
void get_fail() {que.push(rt);while(!que.empty()) {int x=que.front();que.pop();for(IT it=ch[x].begin();it!=ch[x].end();it++) {int y=it->second;if(x==rt) fail[y]=rt;else {int z=fail[x];for(;fail[z]&&!ch[z][it->first];z=fail[z]);if(ch[z][it->first]) fail[y]=ch[z][it->first];else fail[y]=rt;}que.push(y); }}
}#define pr pair<int,int>
pr sta[N];
int top;
int qry(int ql,int qr) {int x=rt,rs=0;For(i,ql,qr) {int c=a[i];for(;fail[x]&&!ch[x][c];x=fail[x]);if(ch[x][c]) {x=ch[x][c]; if(w[x]) {rs+=w[x]; cnt[x]++;sta[++top]=make_pair(x,w[x]);w[x]=0;    }int y=fail[x];while(w[y]) {rs+=w[y];sta[++top]=make_pair(y,w[y]);w[y]=0; cnt[y]++;y=fail[y];}}}while(top) {pr tp=sta[top--];w[tp.first]=tp.second;}return rs;
} void calc(int ql,int qr) {int x=rt;For(i,ql,qr) {int c=a[i];x=ch[x][c];}printf("%d\n",cnt[x]);
}//#define DEBUG
int main() {
#ifdef DEBUGfreopen("2754.in","r",stdin);freopen("2754.out","w",stdout);
#endifread(n); read(m);For(i,1,n) {int len; read(len);ll[i]=a[0]+1;For(j,1,len) read(a[++a[0]]);a[++a[0]]=-1;read(len);For(j,1,len) read(a[++a[0]]);rr[i]=a[0];}For(i,1,m) {int len; read(len);ll[n+i]=a[0]+1;For(j,1,len) read(a[++a[0]]);rr[n+i]=a[0];insert(ll[n+i],rr[n+i]);}get_fail();For(i,1,n) ans[i]=qry(ll[i],rr[i]);For(i,1,m)calc(ll[n+i],rr[n+i]);For(i,1,n-1) printf("%d ",ans[i]);printf("%d",ans[n]);return 0;
}
/*
4 1
1 2 1 2
4 3 1 1 9 6 6 9 1 10 7 9
4 8 1 9 9 6 9 9 7 9 3 10
6 8 9 2 1 1 4 1 4
1 9
5 8 9 1 5 2
4 2 10 7 6
2 5 1
*/

View Code

转载于:https://www.cnblogs.com/Achenchen/p/8561793.html

bzoj2754: [SCOI2012]喵星球上的点名相关推荐

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

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

  2. [BZOJ2754]-[SCOI2012]喵星球上的点名-AC自动机+树状数组

    说在前面 感觉这题还是挺经典的 所以还是写了记录一下- 题目 BZOJ2754传送门 洛谷P2336传送门 看题可进传送门 题目-略长,概括起来有点麻烦 解法 读完这道题之后,可以发现实际上它就是要我 ...

  3. [BZOJ2754][SCOI2012]喵星球上的点名(后缀数组+莫队)

    Address 洛谷P2336 BZOJ2754 LOJ#2374 Solution 考虑在每个人的姓和名之间插入一个无关的字符. 这样问题就转化成了一些主串和一些模式串,询问每个模式串能匹配到多少个 ...

  4. [BZOJ2754][SCOI2012]喵星球上的点名 后缀数组

    不科学啊...这题暴力可过...感觉所有串都是a就可以卡掉啊... 我的做法就是先把姓名串和询问串全部连在一起,并打上分隔符,并记录每个字符属于哪个串,求出SA.对于每个询问就从它所在的位置左右扫he ...

  5. 洛谷2336 BZOJ2754 SCOI2012 喵星球上的点名 SA 莫队 二分

    题目链接 题意: 有nnn个人,每个人有两个串,一个表示姓,一个表示名,这里用数字表示字符.有mmm次询问,对于每次询问,你要回答有多少个人的姓或者名至少有一个是给出的串的子串.最后再对于这nnn个人 ...

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

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

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

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

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

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

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

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

最新文章

  1. retinaface mnn
  2. 《梦断代码》阅读笔记01
  3. allegro 16.6/17.4 中如何将实心焊盘显示为空心焊盘
  4. 通过btrace排查线上频繁Full GC的case 1
  5. python 中的input
  6. win7右键计算机管理参数错误,win7纯净版虚拟磁盘管理器参数错误怎么解决?
  7. 天下无难试之Redis面试刁难大全「原创」
  8. Linux下的Apache和PHP安全设置
  9. FlashDevelop 3.0.0 Rc2 版本下载
  10. smarty缓存控制
  11. 大学四年走来,这些网络工程师必备的模拟器我都给你整理好了
  12. P1322 logo语言
  13. CrossApp 0.4.2 发布,隆重推出 WebView
  14. 重置计算机的本地策略,手把手教你win10系统本地组策略重置恢复默认的详细方案...
  15. uniapp开发App调用微信授权登陆
  16. 人工智能辅助服装设计 | Mixlab论文带读
  17. 3D MAX界面操作教程及渲染技巧
  18. lcd与led的区别
  19. Android 使用fastboot命令刷机流程
  20. 我的Go+语言初体验——GO+的下载与安装

热门文章

  1. IDA 7.5 Demo 包含 Windows、Linux、macOS
  2. DevStack安装问题,git clone noVNC.git失败
  3. nafxcw.lib与LIBCMT.lib在vs2008中链接冲突解决方案
  4. 《Linux内核设计与实现》读书笔记(十八)- 内核调试
  5. java vtd-xml_在java中使用vtd-xml获取xml中的属性文本
  6. [攻防世界 pwn]——get_shell
  7. [Jarvis OJ - PWN]——Smashes
  8. java动态定义泛型_关于oop:具有动态性质且可完全自定义的Java泛型编程
  9. 关于 Unloading class sun.reflect.GeneratedSerial...
  10. 和我一起学 Selenium WebDriver