自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CF204E Little Elephant and Strings

一、题目点此看题二、解法还是太自信了,以后刷水题要注意,这次踩了很多坑点qwqqwqqwq。这道题就是广义后缀自动机的一眼题,一开始以为直接用sizsizsiz就可以了(是错的),但是本题需要线段树合并来维护一个节点出现在多少个串中,然后直接算failfailfail链上的贡献和,注意一个节点的贡献是len[u]−len[fa[u]]len[u]-len[fa[u]]len[u]−len[...

2020-02-29 21:35:29 271

原创 CF1045B Space Isaac

一、题目点此看题二、解法神题,我真不知道谁能看出来这题要用字符串。首先考虑,如果对于AAA中的每一个数,都能在AAA中找到另一个数使得和为kkk,那么kkk是不能被凑出来的,这告诉我们答案是O(n)O(n)O(n)级别的且kkk一定是某一个a[1]+a[i]a[1]+a[i]a[1]+a[i]枚举iii,a[1]a[1]a[1]和a[i]a[i]a[i]配对,a[i+1]a[i+1]a[...

2020-02-29 16:42:27 163

原创 CF1063F String Journey

一、题目点此看题二、解法首先我们可以确定答案是这个样子的:ans.....2,1ans.....2,1ans.....2,1,并且ansansans的值大约是n\sqrt nn​级别的,并且具有单调性,可以靠虑枚举答案,如果当前不行就输出然后结束程序。假设现在要验证的答案是jjj,设f[i][j]f[i][j]f[i][j]为后缀jjj是否能够组成答案iii,我们枚举位置iii,先看f[j...

2020-02-29 10:16:04 182

原创 [BZOJ 4310] 跳蚤

一、题目点此看题二、解法答案一定具有单调性,我们可以二分答案的字典序排名,利用后缀数组可以O(n)O(n)O(n)将排名转化成在SSS串中的位置[L,R][L,R][L,R]。具体就是枚举排名为iii的后缀,算出它们子串的贡献,如果子串个数达到就可以找到位置,否则加上贡献继续找。考虑如何检查,我们从后往前扫,每次贪心地加入一个字符,中途维护划分的子串区间[i,j][i,j][i,j],直接...

2020-02-28 11:12:44 194

原创 CF822E Liar

一、题目点此看题二、解法考虑dpdpdp,设f[i][j]f[i][j]f[i][j]为SSS串的前iii个划分了jjj段的最大长度,我们用刷表法更新:当前不选,则f[i+1][j]=f[i][j]f[i+1][j]=f[i][j]f[i+1][j]=f[i][j]选lcplcplcp(选最多的一定最优),则f[i+lcp][j+1]=f[i][j]f[i+lcp][j+1]=f[i]...

2020-02-28 08:39:25 260

原创 [USACO07DEC]Best Cow Line, Gold

一、题目点此看题二、解法一开始想到了bfsbfsbfs,但是数据范围太大,这里考虑后缀数组的解法。假设我们选取到了s[l...r]s[l...r]s[l...r],如何决策选s[l]s[l]s[l]还是选s[r]s[r]s[r]呢?可以比较后缀lll和前缀rrr的字典序大小,这就可以用后缀数组优化。我们先建出S#S′S\#S'S#S′(中间是特殊字符,S′S'S′是SSS的翻转),那么后缀...

2020-02-27 12:30:39 217

原创 [SDOI2008]Sandy的卡片

一、题目点此看题二、解法可以先求出差分之后的字符串,问题就变成了若干个字符串的最长公共子串。然后就变成了这道题,本题数据水,怎么乱搞都可以过。#include <cstdio>#include <cstring>#include <iostream>#include <map>using namespace std;const i...

2020-02-27 11:11:05 238

原创 CF932G Palindrome Partition

一、题目点此看题二、解法真的神题,我是看着yyb大佬的博客做的,换我自己肯定想不出来。题目中分成kkk段肯定是直接做不了的,我们尝试对原问题做等价变化。可以构造出一个新的字符串:S′=s[1]s[n]s[2]s[n−1]....S'=s[1]s[n]s[2]s[n-1]....S′=s[1]s[n]s[2]s[n−1]....,问题就转化成了把S′S'S′划分成若干个长度为偶数的回文串(...

2020-02-27 08:53:16 283

原创 CF1080E Sonya and Matrix Beauty

一、题目点此看题二、解法考虑枚举左右边界,我们考虑形成的nnn个字符串。首先一个串能重排成回文串首先要满足出现次数为奇数的字符至多只有一个,如果我们把字符串hashhashhash,那么还有满足能构成一个回文串,跑manachermanachermanacher统计回文串个数即可。这里的manachermanachermanacher写法略有不同,我们需要把不满足条件的设为−2,−3......

2020-02-26 10:01:50 241

原创 CF17E Palisection

一、题目点此看题二、解法正难则反,用全部减去不交即可得到相交的情况数。先跑一遍manachermanachermanacher,可以差分出以每个位置开始和结束回文串数量,然后我们扫一遍,用前面rrr的和乘上当前的lll计入贡献,注意我们只需要统计#号位置处的贡献。#include <cstdio>#include <cstring>#include <i...

2020-02-25 15:53:19 231

原创 [BZOJ 2160]拉拉队排练

一、题目点此看题二、解法求前kkk大的奇数回文子串,我们先跑一遍马拉车,然后差分算出每个长度的回文串,快速幂就可做了。#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int M = 2000005;const int MOD = 19...

2020-02-25 15:11:09 147

原创 [国家集训队]最长双回文串

一、题目点此看题二、解法先跑一遍manachermanachermanacher,维护出两个数组:l[i]l[i]l[i]表示以iii左端点的最长回文串长度,r[i]r[i]r[i]表示以iii为右端点的最长回文串长度,先打上标记然后用类似差分的办法即可维护。易得我们只需要考虑特殊符号的l,rl,rl,r,然后我们求出每个#处l+rl+rl+r的最大值即可,时间复杂度O(n)O(n)O(n...

2020-02-25 11:04:07 171

原创 CF587F Duff is Mad

一、题目点此看题二、解法这道题没有什么优秀的解法,首先可以把一个询问拆成两个,我们考虑两个暴力算法。我们可以离线询问,枚举到iii的时候加入sis_isi​在AC\text{AC}AC自动机上的最后一个点,直接让failfailfail树上子树全部+1+1+1即可,然后回答对应的询问,把这个字符串对应在自动机上的所有点权值拿到即可,这种算法的复杂度是O(n2log⁡n)O(n^2\log ...

2020-02-25 08:35:07 263

原创 CF1038F Wrap Around

一、题目点此看题二、解法题目中的循环节有点吓人,我们可以把它变成文本串倍长之后是否包含模式串。正难则反,我们求出不包含的所有方案数,用所有方案减去即可。先建出AC\text{AC}AC自动机,我们枚举文本串的后缀能够匹配到点iii,设f[len][j][k]f[len][j][k]f[len][j][k]为当前处理到的长度为lenlenlen,前缀匹配到的点为jjj,后缀加上前缀能够匹配...

2020-02-24 10:05:47 260

原创 [HDU 4117] GRE Words

一、题目点此看题二、解法判断子串可以理解为在failfailfail链上是否出现过。假设我们要知道dp[i]dp[i]dp[i](选到iii的最大权值),并且我们已经知道了dp[1...i−1]dp[1...i-1]dp[1...i−1],我们可以把以前求出来的dpdpdp值更新failfailfail树上的子树的权值,算dp[i]dp[i]dp[i]的时候我们边匹配边获取以前标记的最大权值...

2020-02-23 22:42:46 183

原创 CF710F String Set Queries

一、题目点此看题二、解法本题要求强制在线,但是蒟蒻作者只会离线,也讲一讲吧,虽然和本题关系不大,不想听的巨佬可以跳过这一部分。可以先把所有111操作的字符串插入AC\text{AC}AC自动机,然后回到第一步,插入和删除都可以看作对failfailfail字符的区间加减,询问直接在当前时刻的自动机上跳就行了。那离线怎么做呢?首先删除可以理解成插入自动机和删除自动机的差分,那删除也就变成...

2020-02-23 14:58:22 179

原创 CF696D Legen...

一、题目点此看题二、解法定义dp[i][j]dp[i][j]dp[i][j]为长度为iii,匹配到jjj,看到文本串这么大就知道要用矩阵加速了吧。我们先构造出一步的矩阵,然后把它lll次方,找第000行的最大值即可。#include <cstdio>#include <cstring>#include <iostream>#include <...

2020-02-23 11:21:36 170

原创 CF86C Genetic engineering

一、题目点此看题二、解法可以把题目给的限制当成模式串覆盖文本串,最后要求文本串的每个位置都被覆盖,结合套路,我们定义f[i][j][k]f[i][j][k]f[i][j][k]为还剩长度iii,当前匹配到的点是jjj,还未覆盖的一段后缀长度为kkk的方案数。转移枚举下一位字符,我们对于AC\text{AC}AC自动机上的每个点维护一个最大匹配长度(failfailfail链上的),如果跳到...

2020-02-23 10:37:29 404

原创 [COCI2017-2018 Contest4] Vode

一、题目点此看题二、解法设f[i][j]f[i][j]f[i][j]为轮到第iii个人,还剩jjj颗石子的胜负态,暴力转移O(n3)O(n^3)O(n3),考虑前缀和优化。设lll为取最多石子能到达的数量,我们可以求得[l,j−1][l,j-1][l,j−1]的胜负态之和,现在讨论先后手的队伍:如果先后手同属一队,那么和必须包含至少一个必胜态当前状态必胜,否则必败。如果属于不同对,那...

2020-02-23 09:25:58 237

原创 [ZJOI2015]诸神眷顾的幻想乡

一、题目点此看题二、解法本题的关键条件是:叶子不超过20个。如果我们枚举叶子,把它当根把这颗trietrietrie树插入后缀自动机中,最后统计答案,复杂度是可以接受的,而且由于后缀自动机的特性,是绝对不会算重的。我们如何把一个trietrietrie树插入后缀自动机中呢?我们在访问整颗树时把父亲的npnpnp当作lastlastlast,这样就可以愉快的插入了(我没有开车)#inclu...

2020-02-22 20:51:26 145

原创 CF1190C Tokitsukaze and Duel

一、题目点此看题二、解法首先明确一点,如果第一轮没有人赢,那么一定是平局。因为后手可以重复先手的操作,把不能赢的局面留给先手,先手只能选择求和,那么就变成了平局。考虑先手获胜的条件,即一步之后就全部变成一样的,可以枚举这个操作,具体来说处理出l[i],r[i]l[i],r[i]l[i],r[i]数组,表示和iii相同的左边最多到哪里,右边最多到哪里。如果先手不能赢,如果2k<n2k...

2020-02-22 16:12:14 218

原创 [POI2000]病毒

一、题目点此看题二、解法先对原串建出AC\text{AC}AC自动机,我们可以同过这种方式构造无线长的串:从一个点开始走若干步,再通过失配指针跳回来。这就告诉我们只要在自动机上找到了环,那么就说明可以构造出一个无线长的安全串,当然要保证途中不能经过非安全的点,在一开始标记一下即可。时间复杂度O(n)O(n)O(n),口胡可能难以理解,看代码把。#include <cstdio&gt...

2020-02-22 11:02:22 247

原创 [HEOI2016/TJOI2016]字符串

一、题目点此看题二、解法首先一定要注意看题,题目求的是 s[a..b]的所有子串和s[c..d]的最长公共前缀先对原串建出后缀自动机,可以二分答案,我们只用计算s[a..b]s[a..b]s[a..b]中有没有s[c..c+x−1]s[c..c+x-1]s[c..c+x−1],我们需要先找出s[c..c+x−1]s[c..c+x-1]s[c..c+x−1]在自动机上对应的节点,可以先确定s...

2020-02-21 16:17:03 182

原创 CF985F Isomorphic Strings

一、题目点此看题二、解法考虑两个字符串能够映射的条件:对于两个满足映射关系的字符,出现位置完全一样。那么我们能不能把这个出现位置hashhashhash呢?显然是可以的,我们就把在这个位置出现标记为111,未出现标记为000,就转化成了一个二进制串的hashhashhash。然后我们贪心地把两个hashhashhash值相同的字符映射,这个过程以可用multisetmultisetmult...

2020-02-20 10:17:06 210

原创 CF1221E Game With String

一、题目点此看题二、解法这显然是一个不公平游戏,我们把相邻两个X之间的所有.(长度为lenlenlen)拿出来讨论。种类111:len<blen<blen<b,这种线段没人能选,可以忽略。种类222:b≤len<ab\leq len<ab≤len<a,这种线段只有后手能选,只要存在这种线段,那么后手必胜,因为这个东西就像一个复活甲(手动滑稽),后手到...

2020-02-19 20:27:27 290

原创 CF919F A Game With Numbers

一、题目点此看题二、解法发现状态是和排列的顺序没有关系的,爆搜一下发现状态数只有4952495^24952可以暴力跑 tpsort\text{tpsort}tpsort,只不过我们的方法要有一些修改,我们先考虑当前点能不能赢(有没有必败点转移过来),能赢就直接加入队列(不需要其他点来更新它了);如果度数减到000了都不能赢,那就说明只能输,加入队列;否则说明可以平,此时我们就使用无为而治的...

2020-02-19 12:21:08 152

原创 CF1076G Array Game

一、题目点此看题二、解法首先从博弈的角度分析这道题,假设我们要算iii的胜负态,先看[i+1,i+m][i+1,i+m][i+1,i+m]中有没有必败态,如果有iii就是必胜态。否则我们只能拼当前点权的奇偶性,如果为偶就是必胜态,否则是必败态。然后这道题要修改,又要区间查询,肯定用线段树了。但现在我们发现问题很不好做,观察数据范围m<=5,这说明后面mmm个胜负态总情况不是很多(25...

2020-02-19 09:45:21 258

原创 CF138D World of Darkraft

一、题目点此看题二、解法看到n,m<=20就能确定这是sgsgsg函数的题了吧,只不过我们要用一些奇技淫巧。可以把原图翻转454545度,这样右上左下就变成了横切,右下左下就变成了纵切,但这里我们不需要把新的图建出来,只需要表示出一个映射关系,具体方法为:对于点(i,j)(i,j)(i,j),翻转后的坐标为(i+j,i−j+m)(i+j,i-j+m)(i+j,i−j+m)设sg[x...

2020-02-18 16:10:05 199

原创 CF455B A Lot of Games

一、题目点此看题二、解法CF\text{CF}CF的博弈题都是神仙题,蒟蒻被吊打…先建出trietrietrie树,我们考虑trietrietrie上每个节点的胜负态,由于本题的特殊性:当前局博弈的目标不一定是赢。我们设计444种状态:必胜态,只能转移到必败态,二进制表示为101010必败态,只能转移到必胜态,二进制表示为010101可胜可败态,即可转移到必胜态,又可以转移到必败态...

2020-02-18 12:57:03 224

原创 [POJ 2315] Football Game

一、题目点此看题二、解法首先考虑m=1m=1m=1的情况,每堆石子的sgsgsg函数===石子数%\%%最大取走数+1+1+1其他情况,我们把sgsgsg函数写成二进制的形式,再对它们做m+1m+1m+1进制的不进位加法(m=1m=1m=1是就是xorxorxor),最后得到的结果就是整个游戏的sgsgsg函数,我们判断有没有位上有值即可。至于证明,蒟蒻作者是真的不会,贴个代码吧。#i...

2020-02-18 11:16:12 210

原创 A New Stone Game

一、题目点此看题二、解法这种sgsgsg函数做不出来的题只能靠理论了,我们从小数据开始推。只有一堆,先手必胜;有两堆相同的,先手必败(因为后手可以模仿先手);有三堆,先手必胜(可以一步变成两堆相同);有四堆可以划分成两部分相同的,先手必败…我们就有一个猜想:当nnn为偶数并且石堆能划分成两部分相同的,先手必败。仔细想想还是比较好证明的,因为无论先手怎么取,后手都是可以维护石堆能划分成两部...

2020-02-18 08:53:22 142

原创 [POJ 2311] Cutting Game

一、题目点此看题二、解法设sg[i][j]sg[i][j]sg[i][j]为矩阵i×ji\times ji×j的sgsgsg函数,然后枚举分割点就行了。但是直接这么写你会发现wa\text{wa}wa了,因为sgsgsg函数的一个基本要求是直到不能操作才判输,但是如果先手剪出了1×11\times 11×1,后手可能是可以继续剪的,但此时我们需要停止游戏。怎么解决上述的问题呢?我们考虑对...

2020-02-17 12:38:45 180

原创 [POJ 1704] Georgia and Bob(阶梯博弈)

一、题目点此看题二、解法0x01 阶梯博弈即有nnn个阶梯,每个阶梯上有若干个石子,可行的操作是将一个阶梯上的石子移任意个正整数个到下一个阶梯。当没有可行操作时(所有石子都被移动到了地面,即第0号台阶)输。阶梯博弈的sgsgsg函数等价于奇数阶梯的nimnimnim游戏,下面给出说明:如果对手移动了奇数阶梯的石子,我们就继续按照nimnimnim游戏的规则移动石子;如果对手移动了2n2...

2020-02-17 09:46:32 236 1

原创 [hihocoder 1173] Nim游戏

一、题目点此看题二、解法我们把出现在iii位置的正面朝上记为状态iii,原串可以分解成若干个状态的集合,如样例的状态集合 S={1,2,4,7}S=\{1,2,4,7\}S={1,2,4,7}状态iii可以直接变为状态000,或则通过翻转左边变为状态i−1i-1i−1那么nim\text{nim}nim游戏的雏形就显现了出来。但是问题来了,如果若干次操作后出现状态iii和状态i+1i+1...

2020-02-16 12:53:54 373

原创 [NOI2018]你的名字

一、题目点此看题二、解法先对SSS建出后缀自动机,我们考虑求出pip_ipi​,即iii这个前缀在[l,r][l,r][l,r]能够匹配的最大长度。可以线段树合并维护出endposendposendpos集合,只不过匹配时的写法要略微改变。我们先看当前点的右儿子在[l+len,r][l+len,r][l+len,r]之间有没有值,有的话可以匹配;否则我们一直循环,暴力把lenlenlen减...

2020-02-16 08:01:05 198

原创 CF700E Cool Slogans

一、题目点此看题二、解法可以建好后缀自动机后dpdpdp,容易发现我们只需要考虑一条链上的选取情况(即一定包含后缀关系,如果不包含则在另一条链上被考虑过了),设f[u]f[u]f[u]为自上到下dpdpdp到uuu,所取得的最大长度,我们还要维护一个决策点,dpdpdp时需要判断父亲的决策点是否在该节点代表的串中出现了两次。由于一定有后缀关系,我们只需要判断决策点的endposendpos...

2020-02-15 17:25:07 196

原创 CF666E Forensic Examination

一、题目点此看题二、解法先对模式串建出广义后缀自动机,如何快速匹配SSS的子串呢?可以先把SSS的前缀拿去匹配,记录下匹配点和匹配长度,子串的本质就是前缀的后缀,询问时拿到右端点的匹配点,倍增找到长度最小的大于子串长的点,则该点就是子串的匹配点。因为规定我们只能在[l,r][l,r][l,r]这个范围的字符串找最大值,要用线段树合并维护每个点在每一个模式串的出现次数,并维护出最大值,这一部...

2020-02-15 11:34:12 170

原创 CF833B The Bakery

一、题目点此看题二、解法暴力的dpdpdp比较好想,设dp[i][j]dp[i][j]dp[i][j]为前iii个里面划分jjj块,转移如下:dp[i][j]=dp[k][j−1]+cdp[i][j]=dp[k][j-1]+cdp[i][j]=dp[k][j−1]+c其中ccc为当前块的价值,从前往后扫就可以维护,时间复杂度O(n2k)O(n^2k)O(n2k)。观察上面的方程,好像可以...

2020-02-14 12:22:39 135

原创 CF833C Ever-Hungry Krakozyabra

一、题目点此看题二、解法很暴力的一道题,直接数位dpdpdp应该是做不出来的。没办法了,只能暴力,如果我们去枚举生成数,本质上是这样一个方程的整数解:x0+x1...+x9=18x_0+x_1...+x_9=18x0​+x1​...+x9​=18,情况数是C(27,9)≈4e6C(27,9)\approx 4e6C(27,9)≈4e6,啊哈哈!只有4e64e64e6,果断搜索。考虑如何检...

2020-02-14 10:54:31 752

原创 CF848B Rooter's Song

一、题目点此看题二、解法如果两个人(i,j)(i,j)(i,j)相遇,那么一定满足如下条件:ti+pj=tj+pi⇒pj−tj=pi−tit_i+p_j=t_j+p_i\Rightarrow p_j-t_j=p_i-t_iti​+pj​=tj​+pi​⇒pj​−tj​=pi​−ti​那么我们可以把所有点按照p−tp-tp−t分类,每个类里会相遇,不同类一定不会相遇。我们把每个类单独处理,...

2020-02-13 15:56:37 200

空空如也

空空如也

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

TA关注的人

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