自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lleozhang的博客

oier,生而骄傲

  • 博客(105)
  • 收藏
  • 关注

原创 后缀自动机例题精讲

这一篇是后缀自动机的一些例题题解及总结:例:bzoj 3998题意:求一个字符串中第k小子串,t=0表示子串仅区别字典序,t=1表示子串区分起止位置解析:建起后缀自动机,构造parent树,利用后缀自动机有向无环累计子串个数查询即可具体解析:https://blog.csdn.net/lleozhang/article/details/89413818bzoj 2780...

2019-04-20 10:39:28 569

原创 bzoj 3998

我们分成两种情况来分析这个问题:t=0和t=1t=1时,每一个子串出现的次数就是他在parent树上所在子树内前缀节点的个数,这一点我们已经说的很清楚了利用SAM有向无环的性质,我们可以在parent树上统计完之后在后缀自动机上dfs,对每个点累计以他为开头的所有子串的总数然后在查询的时候直接在SAM上跑,如果以当前点为开头的子串总数小于k,则将k减去这个总数后向他的兄弟节点查询,否则...

2019-04-20 10:33:41 420

原创 后缀自动机实际应用

上一篇我们具体介绍了后缀自动机的构造方式,但并没有谈它的应用,那么我们在这一篇里详细谈一谈后缀自动机的应用首先,后缀自动机的性质:从根节点开始可以识别一个字符串的所有子串接下来,我们需要给出一个定义:将后缀自动机上的pre指针反指,会得到一棵树形结构,我们把这棵树叫做parent树!parent树是原串反串的后缀树!记住这个定义,因为后缀自动机中大部分题都与这棵树有千丝万缕的联...

2019-04-20 10:21:36 779

原创 后缀自动机学习笔记

学了一周后缀自动机,觉得...好难啊(主要还是自己太弱了...)看见网上很多大佬的讲解,感觉总是有些似懂非懂,索性一起拿出来做一个总结,可能效果会好一些首先,我们能看到这样一个定义:后缀自动机是一个的确定性有限状态自动机,能接受这个字符串的所有后缀然后就不知道了......(不得不承认,对于我这种蒟蒻,看到这个定义的第一反应是看看别的...)所以我们直接从后缀自动机的结构与...

2019-04-20 09:23:24 343

原创 bzoj 3277

十分之恶心的后缀自动机(其实是水题,但是我太弱了...)首先,有一个预备知识:bzoj 2780https://blog.csdn.net/lleozhang/article/details/89365183现在我们假定你会了这道题然后我们来讨论这个问题:套路是一样的:仍然建起广义后缀自动机,然后搞出parent树首先我们要想一个问题:如何确定某一个子串在这些串中出现的次数...

2019-04-18 21:07:47 289

原创 bzoj 2780

后缀自动机的应用首先我们观察到:如果一个询问串的答案不为0,那么这个串一定是至少一个模式串的子串如果只有一个模式串,那么这个问题可以简单地用什么东西解决掉(比如普通后缀自动机)而这里有很多模式串,所以普通后缀自动机是不够的。那么我们提出广义后缀自动机所谓广义后缀自动机,可以简单理解成将很多个串建在同一个后缀自动机上所以它的构造就是:每插入完毕一个串,就将las指针指回根节点...

2019-04-18 10:20:28 237

原创 lnoi2019游记

好诡异的省选......day0:莫名其妙的订了下午从sy到dl的火车,得五点多才能到,所以.......是不需要试机的吗......好吧...看着停课的jflr们,感觉他们好强啊,像我这种酱油选手聊尽人事,不要被高一的虐就好...考前期望:lnsyzx=3,lnsyzx(分校)=2+zwz,所以...乐观估计我们今年应该有6个省队?反正跟我没啥关系...然后就上火车了...

2019-04-16 19:03:49 1068

原创 bzoj 3238

后缀数组+单调栈的应用首先我们研究一下这个表达式,可以发现前半部分与串的情况并没有关系,而只是跟串的长度有关,所以我们先把前半部分算出来:于是我们只需计算出即可那么可以发现,对于排名分别为i,j的两个串,他们的lcp应当是:但是这里的时间复杂度仍然很大我们换一个角度来思考:如果设,那么我们认为height[k]产生了一个贡献所以我们可以从每一个height[k]产生了多...

2019-04-15 20:00:05 207

原创 bzoj 4816

这题是莫比乌斯反演的典型题也是很有趣的题。题意:求,其中f为为斐波那契数列那么首先观察一下指数,发现是我们熟悉的形式,可以转化成这样的形式:令T=kd,且假设n<m,有:令则原式=这样的话我们的步骤就是这样的:线性筛出莫比乌斯函数,同时递推求出f然后利用f和莫比乌斯函数求出g(枚举倍数,这样把时间复杂度控制在调和级数级别),注意到有时会出现分数(莫比乌斯函...

2019-04-10 18:30:01 171

原创 bzoj 3529

非常好的一道莫比乌斯反演题,对提升自己的能力有很大帮助。首先我们分析一下题意:题意让我们求,其中那么我们首先对后面的式子进行一下变形,变形过程详见https://blog.csdn.net/lleozhang/article/details/89093689于是最后变成了这个样子:但是这个式子还是不好,所以我们改变一下枚举顺序,先枚举d于是上式改为:可以发现右侧的式...

2019-04-09 18:49:50 164

原创 bzoj 2301

一道莫比乌斯反演入门题。首先观察题目要求:的数对数首先可以发现,这个东西同时有上界和下界,所以并不是很容易计算那么我们变下形,可以看到:原式=是不是清晰很多了?(当然没有!)不,这一步很重要的目的在于消去了下界,使得我们的计算更方便了。而且可以发现这四个式子的形式是一样的,所以我们对一个式子进行研究就可以了。那么问题就变成了这样:求满足的数对数那么我们再进行研究...

2019-04-08 16:29:05 379

原创 noip 2018游记

憋了好久的游记...考虑到写游记是oi界的传统,所以还是应该写一篇的。day0:上午9:30的火车出发,车上颓三国杀!中午12:00到了大连,下午2:00才开始试机,还是得先去大连大学,在食堂吃午饭(食堂真良心,菜量巨大)下午试机,为什么按字典序排的考号啊...x,y,z集体分在了A区小机房...试机时间好短...就写了个对拍练练手大连大学的键盘...还好吧,没有上...

2018-11-21 13:15:16 252

原创 bzoj 4011

看了好多篇题解才看懂的题,我实在太菜了...首先根据一个我不知道的算法,可以证明在没有加入新的边的时候,原图的所有生成树的方案数就是所有点(除1以外)的度之积那么在新加入这条边之后,我们仍然可以这样计算,但是会产生一种问题:就是会出现环!所以我们需要利用一些容斥,把不合法的情况去掉接下来我们考虑如何算出不合法的情况由于原图是一个有向无环图,所以在原图中怎么选都不会出现环,所以多...

2018-11-06 09:41:21 180

原创 bzoj 3191

非常好的一道题看到这道题,肯定能想到概率dp,但是状态的设计与转移都是一个难点如果正向模拟来设计状态,那么不难发现是很难以转移的所以我们考虑反向模拟,用类似博弈的方法来转移不难发现,如果只剩了最后一个人,那么这个人获胜的概率是1而如果只剩两个人,我们完全可以通过摸牌的情况算出每个人的胜率(这里的胜率是先手和后手之分)而如果剩三个人,我们发现通过摸牌会先淘汰一个人,然后就变成...

2018-11-06 08:15:30 152

原创 bzoj 3566

非常好也是比较难的题首先,不难看出这是一道树形的概率dp那么我们就要考虑转移我们发现,一个点能充上电的概率是这个点本身通电的概率+这个点的子节点给他传过来电的概率+这个点的父节点给他传过来电的概率但是这里的加法都是概率的加法,也就是说满足如下公式:那么如果是三元事件,这个公式会更为复杂,所以这一点并不是特别容易计算那么我们考虑正难则反:一个点没有电的概率=父节点没传过来...

2018-11-06 08:06:25 166

原创 bzoj 1042

典型的背包+容斥首先,考虑如果没有个数的限制,那么就是一个完全背包,所以先跑一个完全背包,求出没有个数限制的方案数即可接下来,如果有个数的限制,那么我们就要利用一些容斥的思想:没有1个超过限制的方案=至少0个超过限制-至少1个超过限制+至少2个超过限制-至少3个超过限制+至少4个超过限制所以我们用2进制数枚举谁超过了限制,然后加入上面的容斥即可其中:如果第i种硬币的限制为ni,那么...

2018-11-06 07:40:27 132

原创 bzoj 2427

非常好的一道题,可以说是树形dp的一道基础题首先不难发现,:如果我们把有关系的两个点用有向边相连,那么就会形成一个接近树的结构。如果这是一棵完美的树,我们就可以直接在树上打背包了但是这并不是一棵完美的树,甚至并不是一棵树,因为:首先,由于题中有n个点,还有n条边,所以有很大的几率出现环!而且,如果出现了环,那么很有可能整个图并不连通,这样一来根本无法跑dp所以我们要采取一些策略...

2018-11-06 07:24:39 164

原创 bzoj 1222

比较简单的背包dp,设计状态f[i][j]表示到了前i个物品,第一台机器加工时间为j,第二台机器加工所用的最小时间,然后背包转移即可本题卡空间,需要滚动数组优化本题卡时间,稍微卡下常就行#include &lt;cstdio&gt;#include &lt;cmath&gt;#include &lt;cstring&gt;#include &lt;cstdlib&gt;#in...

2018-11-03 16:14:21 176

原创 bzoj 1076

发现自己已经把期望dp忘光了...其实本质上非常简单,就是利用状压的思想跑期望首先很容易设计出状态:记状态f[s][i]表示到了第i个点,之前已选过的点的状态为s时所能获得的最大期望得分但是会发现这样做没法转移(你可以试一下,我做了半个点做得原地爆炸)但是我们知道,期望dp常见的策略是从后向前,逆向转移所以我们修改一下状态:记状态f[s][i]表示到了第i个点选的点集为s时,i...

2018-11-03 08:07:31 159

原创 CF1000G

蜜汁树形dp...首先分析一下:他要求一条边至多只能经过两次,那么很容易会发现:从x到y这一条路径上的所有边都只会被经过一次。(如果过去再回来那么还要过去,这样就三次了,显然不合法)那么其他能产生贡献的部分就只有一下几个部分:x,y的子树内部,LCA(x,y)的上半部分的树以及x-y路径上的点向外延伸所形成的部分这三部分互相独立又互相关联,所以我们设计三个dp对他们进行转移记dp1...

2018-11-02 19:21:34 355

原创 CF979E

 非常好的dp,非常考dp的能力很显然是个计数问题,那么很显然要么是排列组合,要么是递推,这道题很显然递推的面更大一些。那么我们来设计一下状态:设状态f[i][j][k][p]表示目前到了第i个点,这i个点中有j个白点是奇数条好的路径的结尾,k个黑点是奇数条好的路径的结尾,p个白点是偶数条好的路径的结尾的方案数可能这个状态本身不是特别好懂,我们详细解释一下:这样的图的个数会...

2018-11-02 15:23:59 455

原创 bzoj 3129

非常好的一道数学题,考察了大量数论和组合数学的知识在做本题之前强烈建议先完成下列两个背景知识:①:bzoj 2142礼物因为本题的一部分数据需要利用到拓展卢卡斯定理,而礼物是拓展卢卡斯定理的裸题,先做礼物是一个比较好的选择有困难戳这里https://blog.csdn.net/lleozhang/article/details/82884768②:CF451E本题的...

2018-11-01 07:59:03 167

原创 CF451E

一道不错的题,对排列组合能力的要求较高题意:给定s个相同的小球放在n个不同的盒子里,可以不放,每个盒子有一个放的上限,求一共有多少种放法解析:首先考虑没有上限的情况,这里比较好解决,采用隔板法,可以计算出放法为看到网上很少有对这个隔板法进行详解的,这里稍微做一下解释:隔板法,顾名思义,就是采用放置隔板的方法来进行分组方式的计算,在这里,由于每个小球都是相同的,所以唯一产生不同的可能...

2018-11-01 07:29:19 279

原创 CF939F

好神奇的dp...首先有一个很简单的思想:设dp[i][j]表示目前到了第i分钟,朝上的面被烤了j分钟的情况下所需的最小交换次数那么有转移:dp[i][j]=min(dp[i-1][j],dp[i-1][i-j]+1)这一点很好理解,就是讨论现在向上这面上一分钟的状态:如果上一分钟这一面也朝上,那么就直接继承,如果上一分钟这一面朝下,那么就要翻一次,同时之前朝上的面的被烤的时间就是i-...

2018-10-31 15:53:55 234

原创 CF1015F

玄学字符串dp...题意:给定一个括号序列,求长度为2n的合法的括号序列的个数(要求每个被统计的合法序列中均至少有一个子串为给定的括号序列)题解:这题没有想的那么复杂,就是暴力的一个dp首先我们设状态f[i][j][k][0/1]表示当前放到了第i个括号,前i个括号中左右括号个数差为j,已经放好的括号中长为k的部分能与s相匹配,0/1表示之前是否存在与s能匹配上的一整个子串那么...

2018-10-30 20:35:26 166

原创 CF1065D

如果不喜欢过长代码的看官,请移步其他题解...这题其实思想极其简单:棋盘问题常见的算法都比较暴力,常用的有搜索和状压dp而这道题显然没啥能状压的,所以我们考虑搜索但是仅仅搜索是不够的,因为有极大的可能搜到死...所以我们引入记忆化设状态f[i][j][k][0/1/2]代表目前在点(i,j)处,上一个到达的点(注意是达成要求而非经过)的编号为k,目前的棋子种类为1/2/3时...

2018-10-30 16:35:05 159

原创 noip 2018模拟赛2018.10.29 T2 obelist

又是一道玄学题...题解:看到数据范围,显然是状压dp那么我们来设计一下状态设dp[i]表示目前选择的点集为i所能获得的无环子图个数那么如果要求无环,这还是个有向图,所以我们可以将新的子图按拓扑序分层,然后枚举每一层的状态进行转移所以最浅显的思想就是记录整个点集的状态,同时记录最底层的状态,然后用最底层的状态进行转移,转移时只要求新的层与底层均有连边即可但是这样做时...

2018-10-29 21:08:07 243

原创 bzoj 1495

这是一道...卡了我一个月的树形dp...我真是太弱了...其实仔细想想,这题的核心思路并不是特别复杂,但是的确存在不小的难度作为一个看过全网基本所有题解+标程才弄明白这题到底怎么回事的蒟蒻,我努力把所有东西揉到一起让各位看官一眼看懂...首先我们简化一下题意:给定一棵满二叉树,每个叶节点有一个状态(0,1),任选两个叶节点,如果这两个叶节点状态相同但他们的LCA所管辖的子树中的与...

2018-10-29 20:30:42 140

原创 noip 模拟赛2018.10.28 T2 color

好玄学的组合数递推啊...设状态dp[i][j]表示以当前更新到了第i列,第i列使用了j种颜色的合法的方案数那么,由于题目要求考虑相邻两列的问题,所以我们还需枚举上一列的颜色种类以及两列颜色种类总数,那么可以进行转移:其中g[n][k]表示一列中用k中颜色来涂的不同的方案数,有递推:稍微证明一下组合数递推式:首先,我们枚举的x是相邻这两列的颜色种类之和,也就是种类之...

2018-10-29 16:32:08 183

原创 bzoj 4007

非常好的树形dp首先,有个很显然的状态:记状态f[i][j]表示以i为根节点的子树中选了j个叶节点作战,那么很显然有转移:f[i][j1+j2]=f[i&lt;&lt;1][j1]+f[i&lt;&lt;1|1][j2]所以我们只需爆搜一发状态,然后每次更新即可但是有个问题:当我们搜到最底层的叶节点时,由于他的贡献与祖先节点有关,所以无法直接更新但是我们发现,n的数据范围非常小,而...

2018-10-28 16:00:37 166

原创 bzoj 2190

题意:求题解:这题...数据范围是真小...研究一下这一表达式,发现gcd(i,j)=1表示i,j互质,那么互质肯定能想到欧拉函数,可是欧拉函数要求j&lt;i,那么我们变化一下:显然原矩阵是对称的,所以可以转化一下,变成(注意到后面-1是为了防止(1,1)被重复统计)那么发现答案就是所以事实上,这道题的算法是线性的,那么n可以变得更大一些#include &lt;cst...

2018-10-26 19:45:34 221

原创 bzoj 2186

非常有趣的题题意:求1~N!中有多少个与M!互质的数,T组询问,答案对R取模题解:首先,因为N&gt;M,所以N!&gt;M!,所以答案一定有一部分是φ(M!)接下来做一些分析:引理:若x与p互质,则x+kp与p互质(k∈Z)证明:反证法:假设x+kp与p不互质,则设gcd(x+kp,p)=d(d!=1),那么设p=k1d,x+kp=k2d,于是:x=k2d-k...

2018-10-26 19:14:04 189

原创 bzoj 2005

非常好的题简化一下题意,我们可以发现:(0,0)与(x,y)之间经过的整点的数量等于gcd(x,y)-1!利用这条性质,我们可以列出一个表达式:稍微化简一下,得: 接下来,是最重要的一部分:引理:那么,将x=gcd(i,j)代入,得:再化简一下,得:由于n,m很小,所以预处理出φ,然后暴力枚举计算即可#include &lt;cstdio&...

2018-10-26 16:22:53 176

原创 bzoj 2721

 题解:首先推一发式子:原式:通分,移项:打开,合并:再移项,得:设:那么:代入:化简:因为x是整数,所以x的数量显然为能使取得整数的t的个数,也就是求的约数个数而根据约数个数和公式(设一个数)可以将前n个数质因子分解,然后将质因子的幂次相乘,最后将所有幂次*2+1后乘在一起即可。#include &lt;cstdio&...

2018-10-26 15:42:17 506

原创 bzoj 1951

这道题告诉了我们一个很重要的道理:看到题,先想明白再动手!题意:求对999911659取模的值首先,由于n的数据范围不是很大(至少不是很大),所以可以O()枚举所有约数分别求组合数但是有个问题:根据费马小定理,所以组合数应当对p-1取模!可是p-1并不是一个质数啊所以我们要将p-1质因子分解,发现可以分解成四个质数之积,那么我们用四次卢卡斯定理分别计算出四个结果再用中国剩余...

2018-10-26 14:40:19 237

原创 CF919F

题意:Alice和Bob玩游戏,每人各有8张牌,牌的大小在0~4之间每次操作,先手可以选择自己一张牌和对方一张牌求和后%5,将新的牌替代自己拿出的那张牌,以此类推,直到有一个人手中的牌全部是0,则这个人获胜但选牌时不能选择已经为0的牌进行操作现给定初始状态下两人的手牌以及先后手,求是否存在有人必胜分析:很显然是个博弈问题,对这种问题搜索是非常好用的。我们只需考虑一下设计...

2018-10-25 12:01:56 283

原创 CF1005F

这题不错...首先,不难看到他想让你求出的是最短路树然后,考虑到所有边权均为1,所以可以采用bfs直接生成最短路树至于方案的储存,可以在加边的时候同时记录边的编号,然后对每个点维护一个能转移他的最短路的边的编号的集合,这样总的方案数就是所有的集合大小的乘积然后用dfs在每个集合中选一个元素输出即可#include &lt;cstdio&gt;#include &lt;cma...

2018-10-23 20:50:43 204

原创 CF1019C

好玄学的东西...核心思想:for循环!首先,我们从前向后扫所有的点,如果这个点没被标记成不可用就把这个点标记成已使用,然后把所有与这个点直接相连的点标记成不可用接下来,我们从后向前扫所有的点,如果这个点被标记成已使用就把与这个点所有直接相连的也被标记已使用的点达成不能使用,最后标记成可使用的就是集合中的点证明一下这个算法的正确性:首先,经过第一步操作后,第二个要求一定能够满足...

2018-10-23 20:14:56 151

原创 雅礼 noip2018 day4 T2

好玄学的dp啊....设状态dp[i][j]表示是否存在一条以j为起点,状态为i的路径那么可以枚举j的所有后继节点进行转移,但时间较大,而且比较复杂所以我们利用bitset+meet in the middle进行优化:利用bitset优越的位运算性质,我们可以减少一层循环利用meet in the middle思想,我们可以减小枚举范围算法讲解:我们将d分成d/2和d...

2018-10-23 15:13:12 331

转载 bitset用法详解

参见此博客:https://www.cnblogs.com/magisk/p/8809922.html

2018-10-23 14:19:39 263

空空如也

空空如也

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

TA关注的人

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