自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CodeForces 1080E Sonya and Matrix Beauty (Manacher + hash)

题意:给出一个矩阵,求所有子矩阵在变换后构成每行、每列是回文串的子矩阵个数,具体变换表现为将子矩阵行上的元素重新排列。题解:Manacher+hash要构成回文串,则奇数个元素的种数最多只有一个。在划分完子矩阵后,将一行的元素哈希,然后将列上的哈希值跑Manacher。因为有行上的条件限制,用f[]f[]f[]标记一下行上是否是回文串即可。#define _CRT_SECURE_NO_W...

2020-03-31 20:40:21 186 1

原创 UVA 719 Glass Beads (最小表示法)

题意:求字符串的最小表示题解:最小表示法最小表示:循环同构的所有字符串中字典序最小的字符串,即起点不同。#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algori...

2020-03-29 22:15:49 117

原创 CodeForces 128B String (后缀数组|优先队列)

题意:求所有子串中第k小的子串。子串相同位置不同视为不同。题解:后缀数组因为k是1e5,所以根据sa排名来遍历子串,k–就可以了。在计算lcp时,用height来比较当前串的长度,因为已经排好序,所以遍历到小于就可以停止了。a[]a[]a[]:存第iii排名后缀的可操作长度。看到有用优先队列的,具体做法是将所有字符先存进去,取出时在末尾添加其后面的一个字符,再写入。同样k大一点的话就不能采...

2020-03-29 22:02:12 174

原创 CodeForces 123D String (后缀自动机)

题意:求字符串的所有不同子串的贡献和,子串的贡献为(1+n)/2(1+n)/2(1+n)/2,nnn为子串的个数。题解:后缀自动机 (sa也可,用单调栈,插个眼后面补跑拓扑建立topsam,自底向上更新。num[]num[]num[]:sam中一个状态(topsam[i]topsam[i]topsam[i])所表示的子串出现次数。状态所表示个数:(p->fa->len,p-&g...

2020-03-28 23:14:36 193

原创 HDU 4622 Reincarnation (后缀数组|后缀自动机)

题意:给出区间,询问区间里不同子串个数。题解:后缀自动机或者后缀数组参考求解整个字符串的做法。用kuangbin的话简单介绍一下SAM从起点到每个点的不同路径,就是不同的子串。到每一个点,不同路径,其实就是以这个点为最后一个字符的后缀,长度是介于(p->fa->len,p->len]之间的,个数也就清楚了。而且这个其实是动态变化的,每加入一个字符,就可以知道新加了几...

2020-03-28 19:46:25 176

原创 HDU 5769 Substring (后缀数组)

题意:给出一个字符和一个字符串,求包含此字符的不同的子字符串。题解:后缀数组子串本质:后缀的前缀不同子串数=Σ(n−sa[i]−height[i])Σ(n-sa[i]-height[i])Σ(n−sa[i]−height[i]),即去除相同前缀。因为要包含此字符,所以还要去除不包含此字符的子串,从后往前,用preprepre数组来保存离当前字符最近的此字符的位置,取pre[i]pre[i]...

2020-03-27 21:21:47 147

原创 POJ 3356 AGTC (字符串dp)

题意:求使两串相同的最小操作数,操作包含增加、删除和替换。题解:字符串dp都看成删除即可。dp[i-1][j]+1:删除adp[i][j-1]+1:删除bdp[i-1][j-1] +1:替换如果a[i]==b[j],dp[i][j]=min(dp[i-1][j-1],dp[i-1][j]+1,dp[i][j-1]+1);否则dp[i][j]=min{dp[i-1][j-1]+1,dp...

2020-03-27 12:21:30 179

原创 CodeForces 1096D Easy Problem (字符串dp)

题意:字符串每个字符带有一个权值,求删除字符,使字符串中不含有“hard”子串的最小成本。题解:字符串dp用dp[i] (i = 1, 2, 3 ,4)来表示遇到某个字符时,删或不删的最小值。#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<cstdio>#include<string&gt...

2020-03-27 12:07:36 98

原创 CodeForces 1183H Subsequences (hard version) (字符串dp)

题意:给一个字符串 s , 获得 s 中的一个子序列 t 花费是 |s| - |t| , 问最后得到 k 个不同的子序列的最小花费。题解:字符串dpdp[i][j] 表示前 i 个字符删除 j 个所得到的子序列数目。状态转移方程 dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] 分别表示保不保留第 i 个字符。但是这样会有重复的子序列,比如 abcdef...

2020-03-27 11:48:38 84

原创 UVA 11107 Life Forms (后缀数组 + 二分)

题意:给出n个字符串,找出在超过一半的字符串出现过的子串,要求最长,如果有多解,按照字典序输出题解:后缀数组 + 二分二分子串长度,标记每个字符位置,出现n/2次,则在height中必定连续,然后遍历height,满足条件加入set去重即可。#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<cstdio&...

2020-03-27 11:10:30 151

原创 CodeForces 427D Match & Catch (后缀数组)

题意:求两个串的最小公共唯一子串题解:后缀数组利用height数组筛选,sa来区分子串位置。详见注释。#define _crt_secure_no_warnings#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorit...

2020-03-27 10:59:47 200 1

空空如也

空空如也

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

TA关注的人

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