【文文殿下】[BZOJ3277] 串】的更多相关文章

BZOJ3473&&BZOJ3277串 题面 自己找去 HINT 对于所有串建立一个广义后缀自动机,对于每一个节点开一个set表示这个节点接受的子串在哪些串里出现过,然后在parent tree上做启发式合并,理论复杂度应该是\(nlog_{n}^2\). 广义后缀自动机 这个广义后缀自动机在建立的时候和后缀自动机时是基本差不多的,就是在每加入一个新串的时候,把\(last=root\)就好了 如何找匹配大等于k次 首先因为每个节点的fa表示的子串都是现在这个节点的后缀,所以fa出现的次数…
Description 字符串是oi界常考的问题.现在给定你n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中 至少k个字符串的子串(注意包括本身) Input 第一行两个整数n,k. 接下来n行每行一个字符串. n,k,l<=100000 Output 输出一行n个整数,第i个整数表示第i个字符串的答案. Sample Input 3 1 abc a ab Sample Output 6 1 3 题解 多个字符串,考虑建广义后缀自动机. 对于每个节点,记录它在每个字符串出现的…
因为不会SAM,考虑SA.将所有串连起来并加分隔符,每次考虑计算以某个位置开始的子串有多少个合法. 对此首先二分答案,找到名次数组上的一个区间,那么只需要统计有多少个所给串在该区间内出现就可以了.这是一个主席树的经典问题,对每个数找到上次出现位置扔进去即可.这样就做到O(nlog2n)了. 可以进一步优化到O(nlogn),不是很会. 以及我又不会写SA了,没救. #include<iostream> #include<cstdio> #include<cmath> #…
0.题意:给定你n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串(注意包括本身). 1.分析:这个题我问了吴大爷做法 首先建立后缀自动机,然后利用离线搞出每一个节点在多少个串中,这个用树状数组统计一下就好,和BZOJ2780一样,然后如果这个节点在不少于x个串中,我们把这个点的value赋值成这个节点父亲边的字符个数,否则为0.随后我们预处理一下从根到每个节点路径上的权值和.于是每个字符串的答案等于所有这个字符串的后缀节点的从根到该节点的权值和. 然后这个…
常见操作:先把所有串都连到一起,但中间加上一个特殊的符号(不能在原串中/出现过)作为分割 由于全部的子串就等于所有后缀的所有前缀,那我们对于每一个后缀,去求一个最长的前缀,来满足这个前缀在至少K个原串中出现过 那我们就二分一下这个前缀的长度.现在的问题就是怎么判断这个前缀是否在K个串中出现过了. 显然,对于一个后缀s的长度为x的前缀,只要某个后缀t 和s的LCP>=x,就说明x也是t的后缀 我们知道,LCP(x,y)=min{height[rank[y]],height[rank[y]-1],.…
Day0 今天早上三点半才睡着,五点起床,前往省城郑州.与省实验常老师汇合,坐上高铁,下午三点半多才到广州二中. 下午随便找了一个教室进去敲一敲代码,发现自己越来越菜了. 和一大堆网上的dalao面基了呢!开心! 晚上开幕式,节目很好看,讲话很 $\color {red} {风趣} $. Day1 早上的饭好评!可以说是非常好吃了d(`・∀・)b 有面包鸡蛋和牛奶喔 _(:3 」∠ )_ 上午选择了第二教室这个地方QAQ,没能去参加松松松的小黄鸭宣传仪式 Σ( ° △ °).讲了生成函数和他那一…
Day-1 本段更新于 2018年11月8日23:26:44 今天还在机房里面,无所事事吧.上午睡了一上午,出去理了一下发,花了20块钱 QAQ. 下午来到机房,复习了一下exgcd的东西. 发现自己网络流好久没写了,洛谷群里又在讨论网络流,稍微有点慌QAQ 以为自己什么都准备好了,临近NOIp才发现自己什么都没准备好.KMP也好久没摸了,惨惨啊. 爆零预定 然后晚上和大家交流了一下注意事项(其实没有注意事项)以及把模拟赛的坑填了一下. Day 0 本段更新于 2018年11月9日17:27:1…
题解 我们考虑将棋盘扩大一倍,这样相当于取膜.然后,我们只要对x,y,的位置分类讨论,做四次crt就行.具体细节看文文代码. #include<cstdio> #include<algorithm> typedef long long ll; const ll inf = 1000000000000LL; int a[10],m[10]; inline ll exgcd(ll a,ll b,ll &x,ll &y) { if(b==0) { x=1;y=0; ret…
3473: 字符串 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 121  Solved: 53[Submit][Status][Discuss] Description 给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串? Input 第一行两个整数n,k. 接下来n行每行一个字符串. Output 一行n个整数,第i个整数表示第i个字符串的答案. Sample Input 3 1abcaab Samp…
前言 后缀自动机是一个强大的数据结构,能够解决很多字符串相关的(String-related)问题. 例如:他可以查询一个字符串在另一个字符串中出现的所有子串,以及查询一个字符串中本质不同的字符串的个数. 后缀自动机可以理解为一个字符串的所有子串的压缩图,对于一个长度为\(n\)的字符串,它只需要\(O(n)\)的空间,以及\(O(n)\)的时间进行在线搭建(如果我们把字符集视作常数).如果我们把字符集视作变量\(k\),那么他的空间复杂度和时间复杂度都可以做到\(O(nlogk)\).后缀自动…