12 2015 档案
摘要:题目大意给两个长度小于100000的字符串A和B,求出他们的最长公共连续子串。分析后缀自动机基础题。 根据A串构造后缀自动机,然后用B串进行匹配。假设前匹配到了s[i],l为上次停留的节点,如果l有儿子s[i],len++,l=l->ch[s[i]],否则,沿着失配边走到当前第一个...
阅读全文
摘要:题目 分析,这道题很显然要找两个相同的字串,也就是两个后缀公共前缀,很自然地可以想到,可以使用后缀数组。 所谓的L-Gap字串,就是两个相同的字串,中间间隔了g个字符,所以,我们枚举这两个字串的长度l,然后看0和l,l和l*2…..分别从这两个位置向前和向后匹配,匹配的长度减去l就...
阅读全文
摘要:题目大意题目大意:给定有ABC组成的串n个,然后请你生成一个长度为K的串求给定的串在生成串中最多被匹配时的次数分析AC自动机模板题。 构建trie,然后DP. p是当前节点,l是已经构造的串的长度。 没有保存father,可以使用刷表法。 f[p->ch][l]=max(f[p][...
阅读全文
摘要:题目 分析:由于wt(u,v)=gcd(u,v),所以我们枚举gcd,而且只尝试连接gcd和它的倍数,也就是我们尝试连接(i,j),仅当j是i的倍数,至于于为什么,我也不知道。 用LCT维护最大生成树,每次连接一条边时,必定形成一个环,删除这个环中最小边即可。#include#in...
阅读全文
摘要:题目: 后缀数组模板题,做法参见罗穗骞论文。 自认为代码写得比较好看。#include#include#includeusing namespace std;#define MAXN 500000#define MAXD 200int array[4][MAXN*2+10],hei...
阅读全文
摘要:题目分析:重点是把每个两个区间的询问拆分成四个单个区间的询问。 ans[l][r][u][v]=ans[l][v]-ans[l][u-1]-ans[r+1][v]+ans[r+1][u-1];#include#include#include#include#include#incl...
阅读全文
摘要:题目 题目大意:求区间内可重复全排列的个数 分析:如果S是一个多重集,它有K个不同的类型元素,各元素分别为n1,n2,…,nk个,那么,S的r排列个数为n! / (n1!n2!…*nr!)。 所以当我们知道区间[l,r]的答案求[l,r+1]的答案时,ans[l][r+1]=ans...
阅读全文
摘要:题目描述 辉辉热衷于洞穴勘测。某天,他按照地图来到了一片被标记为JSZX的洞穴群地区。经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通道组成,并且每条通道连接了恰好两个洞穴。假如两个洞穴可以通过一条或者多条通道按一定顺序连接起来,那么这两个洞穴就是连通的,...
阅读全文
摘要:题目: 树链剖分:#include#include#includeusing namespace std;#define MAXN 10024#define MAXLOG 14#define INF 0x7fffffffint n,T,size[MAXN+10],dep[MAXN...
阅读全文