自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 bzoj1810/洛谷P2051 [AHOI2009]中国象棋(状压dp)

bzoj1810/洛谷P2051 [AHOI2009]中国象棋题意:每行每列最多放两个,问有多少种情况方法:f[i][j][k]f[i][j][k]f[i][j][k]表示前iii行,有jjj列放一个,有kkk列放两个。然后根据乘法原理什么的就可以了#include <cstdio>#define ll long long#define mod 9999973ll f...

2018-06-18 12:54:17 241

原创 后缀自动机应用及例题

后缀自动机…真的好难啊……. 想学的可以看陈立杰课件……以及众多题解题目题目1. 洛谷P3804【模板】后缀自动机2.spoj1811 LCS3.spoj1812 LCS21. 洛谷P3804【模板】后缀自动机题意:求字符串 S 中所有出现次数不为 1 的子串的出现次数乘上该子串长度的最大值。做法:建立SAM,令叶子节点 size 等于 1...

2018-06-17 22:43:41 2139

原创 bzoj4516/洛谷P4070 [Sdoi2016]生成魔咒 (后缀自动机)

bzoj4516/洛谷P4070 [Sdoi2016]生成魔咒题意:求每加进来一个数以后会有多少个不同的子串方法:每加进来一个数,我们就考虑以它为结尾会有多少个就可以了,显然fa[p]之前都会加完了,所以新产生的就是mx[p]−mx[fa[p]]mx[p]−mx[fa[p]]mx[p]-mx[fa[p]] 数会很大,所有用map记录就好#include <cstdio>...

2018-06-16 19:28:47 249

原创 bzoj4566/洛谷3181 [Haoi2016]找相同字符] (后缀自动机+dp)

bzoj4566/洛谷3181 [Haoi2016]找相同字符题意:求两个字符串中各取除一个串使他们相同的方案数方法:显然,把第一个串建SAM,第二个串在上面跑匹配。 那么个数怎么计算呢,一般来说,我们求size表示它的个数,而这道题,我们需要的使前面的个数和而非后面的。 那么每个点的贡献怎么求呢,这个点已经能匹配上了,那么它的父节点也是可以的,所有结果是f[fa[p]]+size[p...

2018-06-16 01:07:48 331

原创 bzoj1396 识别子串(后缀数组/后缀自动机+线段树)

bzoj1396 识别子串题意:求所有i,使 l≤i≤rl≤i≤rl\leq i\leq r 的子串在字符串中只出现一次的最短子串长度方法:先考虑怎么求出只出现一次的串。 我们可以通过后缀数组,显然从x开始的后缀中最短的就是与前后两个height中最大的一个+1,因为最大的那个使能匹配的最多,那么再加一位显然就不能匹配了 那么这一段的值都可以更新为这个长度,那么用线段树维护就好了。 ...

2018-06-16 00:52:05 249

原创 bzoj2555 SubString (后缀自动机+LCT)

8.bzoj2555 SubString题意:两个操作:在原来的字符串后面加上一个新的字符串;查询一个字符串出现了几次方法:假如没有假如新字符串的要求,就是模板了。 那么考虑加上新字符串会有什么影响,假如新的字符串以后,有的fa就会改变,而其他的是不会变的。 因此考虑LCT维护。每次连边,link(p,fa[p])link(p,fa[p])link(p,fa[p]),那么fa[p]到根...

2018-06-15 10:02:35 192

原创 bzoj3998/洛谷3975 [TJOI2015]弦论 (后缀自动机)

bzoj3998/洛谷3975 [TJOI2015]弦论题意:求第 k 小字串方法:先建立SAM,和上一题一样按照拓扑序求出size(表示这个串出现的次数)。这道题我们需要求第 k 小,所以我们还要求出每个点下面一共有多少个串。搜第 k 小就dfs深搜就可以了。#include <cstdio>#include <cstring>#define N 5000...

2018-06-15 10:01:06 258

原创 洛谷P3804【模板】后缀自动机

4. 洛谷P3804【模板】后缀自动机题意:求字符串 S 中所有出现次数不为 1 的子串的出现次数乘上该子串长度的最大值。方法:建立SAM,令叶子节点 size 等于 1。按照拓扑序从下往上计数。个数大于1的就累计结果。#include <cstdio>#include <cstring>#include <algorithm>using na...

2018-06-15 09:59:59 309

原创 spoj8222 Substrings (后缀自动机)

spoj8222 Substrings题意:f[x]表示所有长度为 x 的子串中,出现次数的最大值。求所有f[x]方法:建立SAM,根据拓扑序找到长度为 x 的子串个数,更新一下就行了#include <stdio.h>#include <string.h>#define N 250010char str[N];int root,cnt=0,n,last...

2018-06-15 09:51:12 379

原创 bzoj2882/洛谷1368 工艺 (后缀自动机求最小表示法)

bzoj2882/洛谷1368 工艺题意:求n个数的最小表示法方法:把这n个数循环两次建SAM,因为不是字母,所以要用map存…然后输出就好了 开始没写读入优化…就t了….惨啊#include <cstdio>#include <cstring>#include <map>#include <algorithm>using na...

2018-06-15 09:39:24 298

原创 最长公共子串问题

求最长公共子串,基本就是求两个串或多个串~ 方法也就是把一个串建SAM,剩下的进行匹配就好啦1.spoj1811 LCS题意:求两个串的最长公共子串方法:用第一个串建立SAM,第二个串在第一个串上找就可以。有点类似ac自动机跑fail指针吧,匹配失败了就往前跳不过好像不能用c++交诶..就很气#include <stdio.h>#include <st...

2018-06-15 09:37:36 414

原创 bzoj3676/洛谷3649 [Apio2014]回文串

bzoj3676/洛谷3649 [Apio2014]回文串题意:找到出现次数∗∗*长度最大的回文子串方法一:通过manacher找到回文串,然后到SAM中搜有多少个….. 然而…会t…. 而我们会发现在SAM中搜有多少个,也就是找到这个回文串的最后一个字符,它的size 所以倍增直接找到最后一个点就可以了#include <cstdio>#include <...

2018-06-14 16:57:47 223

原创 bzoj3238/洛谷4284 [Ahoi2013]差异 (后缀数组/后缀自动机)

bzoj3238/洛谷4284 [Ahoi2013]差异题意:设 TiTiT_i 表示从i开始的后缀。求∑1≤i≤j≤nlen(Ti)+len(Tj)−lcp(Ti,Tj)∑1≤i≤j≤nlen(Ti)+len(Tj)−lcp(Ti,Tj)\sum\limits_{1\leq i\leq j\leq n}len(T_i)+len(T_j)-lcp(T_i,T_j)方法:显然∑1≤i≤j≤...

2018-06-14 11:57:57 193

原创 LCT应用

LCT,就是一个拥有link、cut……诸多操作的高级数据结构了吧 这么高级的数据结构,应用有很多啦 维护链的信息 这个就是最基本的操作了,就和平横数一样该维护什么维护什么就好啦 bzoj2002: [Hnoi2010]Bounce 弹飞绵羊 维护下个数吧...

2018-06-12 08:35:25 362

原创 bzoj3669/lg2387:[NOI2014]魔法森林(LCT)

bzoj3669/lg2387:[NOI2014]魔法森林 题意简单来说,就是找到一条1到n的路径,使得这条路径上最大的A妖怪数+B妖怪数最小显然,这是一道维护边权的题,那我们就把边权拆成点权 这道题要维护两种怪物数,因此我们可以按A从小到大排序,然后去比较B的数 对于每一条边 x->y,若之前不连通,连上即可 若联通,那就说明,如果这条边再加进去,x->y部分就会出现环,...

2018-06-11 08:22:58 182

原创 lg3950 部落冲突 (lct)

lg3950就是lct,维护一下连通性 维护相通性的时候,可以用并查集维护吧 但也可以通过找根操作来看是否联通 如果x、y在一棵树上,那么x、y他们这棵树不管怎么转,做左边的点一定是一样的 因此findroot时,找到最左边的点,看是否一样inline int findroot(int x){ access(x);splay(x); //把x转到根 ...

2018-06-11 07:57:03 232

原创 bzoj4530/lg4219 [BJOI2014]大融合 (lct维护子树信息)

bzoj4530/lg4291 需要维护子树个数.. 在lct中维护两个值:size[x](x的所有子树个数和)、isize[x](与x通过虚边链接的子树个数和)#include <cstdio>#define N 100010int n,m,ch[N][2],size[N],isz[N],fa[N],rev[N];inline bool isroot(int x){re...

2018-06-10 23:05:01 159

原创 lg1501:[国家集训队]Tree II(lct)

lg1501 这题需要维护的比较多啊,乘法下放标记、加分下放标记、数值、和 要注意因为有乘法和加法、所以下放时应当先下放乘法、再下放加法 还有..要用long long哦,因为51061*51061超int了…#include <cstdio>#include <algorithm>using namespace std;#define N 100010#...

2018-06-10 22:29:47 166

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除