直接利用降幂公式(或者有人叫扩展欧拉定理?),由降幂公式: 那么我们可以对这个式子降幂: 发现指数部分仍然是原表达式的形式,所以我们递归处理: 记f(p)=2^2^2^2^2... mod p 于是根据上述分析可得: f(p)=2^(f(φ(p)+φ(p)) mod p 于是我们不断递归至φ(p)= Read More
posted @ 2019-05-05 19:49 lleozhang Views(242) Comments(0) Diggs(0) Edit
还是高斯消元解异或方程组 如果这个你不会,请看这里 现在假定你已经会这个东西了 那么我们就可以构造模型了 首先有一个很显然的结论:一个开关至多只需要按一次!(因为按两次等于不按,按三次等于按一次....) 我们设一盏灯开的状态为1,关的状态为0,那么我们的目标就是把所有灯的状态都改成1 那么能影响到 Read More
posted @ 2019-05-05 19:30 lleozhang Views(151) Comments(0) Diggs(0) Edit
高斯消元解异或方程组裸题 首先介绍一下异或方程组:异或方程组是形如$x_1$^$x_2$^...^$x_n$=$1(或0)$($x_i\in{0,1}$)的一组方程,我们的目的是求出x_i的值 乍一看,这好像并不好做,最暴力的方法是$O(2^n)$枚举 但是有了高斯消元,我们就可以不这么暴力了,而是 Read More
posted @ 2019-05-05 19:21 lleozhang Views(182) Comments(0) Diggs(0) Edit
高斯消元裸题 设给出的每一组坐标为$(a_i1,a_i2,...,a_in)(i\in[1,n+1])$,设球心坐标为$(x_1,x_2,...,x_n)$ 设每个点到球心的距离为$d_i$ 那么一定有方程: $d_1==d_2$ $d_2==d_3$ ... $d_n==d_n+1$ 展开之后,就 Read More
posted @ 2019-05-05 18:13 lleozhang Views(119) Comments(0) Diggs(0) Edit
很有趣的一道题: 我们分类进行计算: 首先,如果只损失了一件,那么很好计算:每一件斧头都会为对应代价产生一种可能 然后,如果值损失了两件,那么也很好计算: 构造多项式$A(x)=\sum_{i=0}^{max(a)}(价值i出现的次数)*x^i$ 那么该多项式与自身卷积,得到的多项式每一项前对应的系 Read More
posted @ 2019-05-04 20:43 lleozhang Views(154) Comments(0) Diggs(0) Edit
与bzoj 4503是一个题,只是两个串都有通配符 如果你没有做过那道题,请看这里 接下来假设你知道这些前置知识了 那么对于两个通配符,我们将表达式变成这样即可: $\sum_{i=0}^{l}S_i*T_i*(S_i-T_i)^2==0$ 然后打开: $\sum_{i=0}^{l}T_i*(S_i Read More
posted @ 2019-05-04 20:40 lleozhang Views(157) Comments(0) Diggs(0) Edit
一道FFT好题,也是FFT作用于字符串匹配的一个典型题 首先我们解释为什么FFT可以用于字符串匹配: 我们发现:设两个字符串为$S,T$,且两个串长度均为$l$,那么两个字符串相等的充要条件是: $ S_i==T_i (i\in [1,l])$ 那么我们变下形,也就是: $S_i-T-i==0 (i Read More
posted @ 2019-05-04 20:18 lleozhang Views(198) Comments(0) Diggs(0) Edit
本题是一道好题... 首先我们可以看到,本题其实可以用完全背包跑,但是复杂度不对 所以我们考虑优化: 我们知道,如果有三个物品价值分别为, 如果允许取一个物品,那么都是合法的答案 如果允许取三个物品,那么就是一个合法的价值(废话) 这是否给了我们一些启示呢? 如果我们设集合,构造一个多项式 可以发现 Read More
posted @ 2019-05-03 17:02 lleozhang Views(317) Comments(0) Diggs(0) Edit
一道FFT的典型题 首先给出结论: 我们令所有下标从0开始,那么: 构造两个多项式 , 那么将这两个多项式卷积,然后输出(n,2*n]的系数即可 为什么? 我们从已知开始:已知,所以 那么我们对Ei的表达式除掉一个qi,就变成了一个与qi无关的表达式! 所以 那么,如果我们设,,那么上式可以重写为: Read More
posted @ 2019-05-02 20:04 lleozhang Views(161) Comments(0) Diggs(0) Edit
首先简化一下题意: 求一个字符串的子序列个数,要求这个子序列满足:是一个回文序列,且在原串中不连续 怎么搞? 设这个字符串为S 首先上一个容斥:我们找出所有回文子序列,然后减去连续的部分即可 而连续的部分可以用manacher算出来 所以我们重点研究一下如何找出所有回文子序列 首先我们回到manac Read More
posted @ 2019-05-02 18:18 lleozhang Views(156) Comments(1) Diggs(0) Edit
FFT裸题 这篇文章并不想介绍FFT,因为作者懒 所以只是贴个板子,顺便说点细节 首先高精度乘法本身就可以用FFT优化,因为本身就是个卷积的形式 (关于这句话的解释:一个十进制的数abcd.....m可以改写成$a*10^k+b*10^{k-1}+c*10^{k-2}+....+m$的形式,如果设x Read More
posted @ 2019-05-02 11:32 lleozhang Views(152) Comments(0) Diggs(0) Edit
cdq分治板子题 这篇主要介绍一下cdq分治 顾名思义,cdq分治是一种分治算法(废话) 但是它与普通的分治算法不同:普通的分治算法将问题分解后只需解决子问题,然后回溯统计即可 但是cdq分治需要处理分解后左右区间之间互相的影响 因此变得更加毒瘤 首先简化一下题意: 有 n 个元素,第 i个元素有  Read More
posted @ 2019-04-30 16:15 lleozhang Views(142) Comments(0) Diggs(0) Edit
和上一题很像,而且这题直接给出了单点修改和区间查询,所以还是两棵线段树容斥即可 Read More
posted @ 2019-04-30 15:35 lleozhang Views(160) Comments(0) Diggs(0) Edit
动态点分治裸题 首先介绍一下动态点分治:就是带修改操作的点分治(废话) 操作涉及单点查询和区间修改 那么首先应该想到线段树 但是怎么操作呢? 首先,修改一个点时的影响范围可以分为上下两部分:一部分在自己的子树内,另一部分通过自己的父节点传上去或传到其他子树内 那么为了使这种操作复杂度尽可能低,我们用 Read More
posted @ 2019-04-30 15:33 lleozhang Views(165) Comments(0) Diggs(0) Edit
首先很容易看出这是一个树上多重背包问题 设状态$f[i][j]$表示以$i$为根的子树中利用的体积是$j$ 但是题目中有要求:选择的点集必须是一个联通块 这要怎么处理? 点分治! 首先我们利用点分治的思想,每次拎起一个根节点进行处理,要求这个根节点必选,然后在子树内进行dp 为了保证根节点必选(至少 Read More
posted @ 2019-04-30 11:03 lleozhang Views(148) Comments(0) Diggs(0) Edit
还是点对之间的问题,果断上点分治 同样,把一条路径拆分成经过根节点的两条路径,对不经过根节点的路径递归处理 然后,我们逐个枚举根节点的子树,计算出子树中某一点到根节点的距离,然后在之前已经处理过的点中找,看有没有距离之和等于k的,如果有就取最小值(这里用桶维护即可) 然后再把这个子树内的信息扔进桶里 Read More
posted @ 2019-04-29 10:24 lleozhang Views(218) Comments(0) Diggs(0) Edit
题目描述:这里 发现还是点对之间的问题,于是还是上点分 只不过是怎么做的问题 首先对每条边边权给成1和-1(即把原来边权为0的边边权改为-1),那么合法的路径总权值一定为0! 还是将路径分为经过当前根节点和不经过当前根节点的,对不经过当前点的递归处理 那么我们讨论经过当前根节点的路径算法即可 可以发 Read More
posted @ 2019-04-28 18:50 lleozhang Views(146) Comments(0) Diggs(0) Edit
点分治入门题 首先发现是树上点对的问题,那么首先想到上点分治 然后发现题目要求是求出树上点对之间距离小于等于k的对数,那么我们很自然地进行分类: 对于一棵有根树,树上的路径只有两种:一种经过根节点,另一种不经过根节点 对于经过根节点的路径,我们可以通过计算出每个点的根节点的距离,然后相加就能求出点对 Read More
posted @ 2019-04-28 16:34 lleozhang Views(265) Comments(0) Diggs(0) Edit
题目描述:这里 一道非常好的题 由于强制在线,我们必须要用一些数据结构来处理 考虑分块:将整个序列分块,块内部分预处理,块外部分暴力处理 对于每个块,计算出以这个块的左端点为端点,向右枚举这个块以后的所有点,然后记录下这样一个区间的最大异或值 然后每次查询的时候直接调用即可 Read More
posted @ 2019-04-26 21:24 lleozhang Views(210) Comments(0) Diggs(0) Edit
今年省选题... 表示当时还没学可持久化trie,所以打60分暴力走人... 现在学了可持久化字典树,就可以搞一搞了嘛! 首先看到题目描述,很容易想到首先搞出异或前缀和,然后建起可持久化字典树 然后考虑一个问题:怎么找出每次的最优区间呢? 因为只有给出一个区间,我们才能利用可持久化trie去跑最大异 Read More
posted @ 2019-04-26 21:16 lleozhang Views(122) Comments(0) Diggs(0) Edit
题目描述:这里 可持久化字典树裸题,可以作为模板使用 首先介绍一下可持久化字典树 可持久化字典树,顾名思义,就是一种可持久化的数据结构,常用于处理异或问题 我们看一下题目,发现要求一个最大异或和,但是这个最大异或和很特殊,有一个区间的限制 首先,对于异或和问题,我们一般利用异或的前缀和性质,把一个区 Read More
posted @ 2019-04-26 20:59 lleozhang Views(184) Comments(0) Diggs(0) Edit
题目描述:这里 从这里开始,我们涉及到了一个新的问题:最小割问题 首先给出一些定义(本人根据定义自己口胡的): 一个流网络中的一个割是一个边集,使得割掉这些边集后源点与汇点不连通 而最小割问题就是一个使得边集中各边容量之和最小的割 根据ford-fulkerson定理,最小割等于最大流! 基于上面的 Read More
posted @ 2019-04-26 15:16 lleozhang Views(195) Comments(0) Diggs(0) Edit
题目描述:这里 极其裸的一道费用流问题 首先分析第一问,由于要求一个点只能经过一次,所以我们将梯形中的每一个点拆成两个点(记为入点和出点,顾名思义,入点用来承接上一行向这一行的边,出点用来向下一行连边) 然后将出入点之间的流量设为1,边权设为0,这样就有效保证了一个点只经过一次 接下来,我们从上一行 Read More
posted @ 2019-04-26 10:16 lleozhang Views(167) Comments(0) Diggs(0) Edit
我们分成两种情况来分析这个问题:t=0和t=1 t=1时,每一个子串出现的次数就是他在parent树上所在子树内前缀节点的个数,这一点我们已经说的很清楚了 利用SAM有向无环的性质,我们可以在parent树上统计完之后在后缀自动机上dfs,对每个点累计以他为开头的所有子串的总数 然后在查询的时候直接 Read More
posted @ 2019-04-25 14:18 lleozhang Views(132) Comments(0) Diggs(0) Edit
题目描述:这里 这道题是网络流问题中第一个难点,也是一个很重要的问题 如果直接建图感觉无从下手,因为如果不知道放几个球我就无法得知该如何建图(这是很显然的,比如我知道 $1+48=49=7^2$ ,可是我都不知道是否能放到第48个球,那我怎么知道如何建边呢?) 所以这时就体现出了一个很重要的想法:枚 Read More
posted @ 2019-04-25 14:17 lleozhang Views(172) Comments(0) Diggs(0) Edit
题目描述看:这里 这是我们遇到的第一个要求输出方案的问题 考虑建图然后用最大流思想: 首先由源点向每一道试题连边,容量为1 然后由每一种试题类型向汇点连边,容量为需求量 最后由每一道试题向可能属于的试题类型连边,容量为1 然后跑最大流,如果流量等于总需求量的话即证明合法(每一条到汇点的边流量都跑满才 Read More
posted @ 2019-04-25 13:54 lleozhang Views(178) Comments(0) Diggs(0) Edit
题目描述:这里 题面已经提示我们这是费用流了 那么由源点向所有仓库连边,容量为仓库原有货物量,费用为0 然后由所有零售商店向汇点连边,容量为一个零售商店的需求量,费用为0 最后由仓库向零售商店连边,容量正无穷(由于源点和汇点的限制,所以不会出现不合法情况),费用为题给费用 然后跑费用流就得到了最小费 Read More
posted @ 2019-04-24 16:30 lleozhang Views(167) Comments(1) Diggs(0) Edit
题目链接:这里 本题是一个典型的费用流问题,可以作为费用流建图模板使用 首先看到,每个人只能做一件工作,每件工作只能做一次,一个人做某件工作有一定的收益 那么我们建立一个超级源点st和超级终点ed,然后由源点向所有人连边,容量为1,费用为0 接着由工作向汇点连边,容量为1费用为0 上面满足了每个人只 Read More
posted @ 2019-04-24 16:20 lleozhang Views(143) Comments(0) Diggs(0) Edit
题目传送门:这里 这是网络流24题里最简单的一道,我们从这里开始 虽然是网络流24题之一,但可以不用网络流... 本题采用贪心即可 有一个很显然的思想:在分配每一组时,我们都应当优先分配给当前可容纳人数更多的桌 证明:这样做显然能最大限度的保留可以用的桌,如果这样做都不合法,那么其他策略一定不合法 Read More
posted @ 2019-04-24 16:12 lleozhang Views(139) Comments(0) Diggs(0) Edit
上一篇我们具体介绍了后缀自动机的构造方式,但并没有谈它的应用,那么我们在这一篇里详细谈一谈后缀自动机的应用 首先,后缀自动机的性质:从根节点开始可以识别一个字符串的所有子串 接下来,我们需要给出一个定义: 将后缀自动机上的pre指针反指,会得到一棵树形结构,我们把这棵树叫做parent树! pare Read More
posted @ 2019-04-20 10:22 lleozhang Views(326) Comments(0) Diggs(0) Edit
学了一周后缀自动机,觉得...好难啊(主要还是自己太弱了...) 看见网上很多大佬的讲解,感觉总是有些似懂非懂,索性一起拿出来做一个总结,可能效果会好一些 首先,我们能看到这样一个定义: 后缀自动机是一个的确定性有限状态自动机,能接受这个字符串的所有后缀 然后就不知道了...... (不得不承认,对 Read More
posted @ 2019-04-20 09:23 lleozhang Views(172) Comments(0) Diggs(0) Edit
十分之恶心的后缀自动机 (其实是水题,但是我太弱了...) 首先,有一个预备知识:bzoj 2780https://blog.csdn.net/lleozhang/article/details/89365183 现在我们假定你会了这道题 然后我们来讨论这个问题: 套路是一样的:仍然建起广义后缀自动 Read More
posted @ 2019-04-18 21:08 lleozhang Views(120) Comments(0) Diggs(0) Edit
后缀自动机的应用 首先我们观察到:如果一个询问串的答案不为0,那么这个串一定是至少一个模式串的子串 如果只有一个模式串,那么这个问题可以简单地用什么东西解决掉(比如普通后缀自动机) 而这里有很多模式串,所以普通后缀自动机是不够的。 那么我们提出广义后缀自动机 所谓广义后缀自动机,可以简单理解成将很多 Read More
posted @ 2019-04-18 10:20 lleozhang Views(157) Comments(0) Diggs(0) Edit
好诡异的省选...... day0: 莫名其妙的订了下午从sy到dl的火车,得五点多才能到,所以.......是不需要试机的吗...... 好吧... 看着停课的jflr们,感觉他们好强啊,像我这种酱油选手聊尽人事,不要被高一的虐就好... 考前期望:lnsyzx=3,lnsyzx(分校)=2+zw Read More
posted @ 2019-04-16 19:04 lleozhang Views(392) Comments(0) Diggs(0) Edit
后缀数组+单调栈的应用 首先我们研究一下这个表达式,可以发现前半部分与串的情况并没有关系,而只是跟串的长度有关,所以我们先把前半部分算出来: 于是我们只需计算出即可 那么可以发现,对于排名分别为i,j的两个串,他们的lcp应当是: 但是这里的时间复杂度仍然很大 我们换一个角度来思考:如果设,那么我们 Read More
posted @ 2019-04-15 20:00 lleozhang Views(110) Comments(0) Diggs(0) Edit
这题是莫比乌斯反演的典型题也是很有趣的题。 题意:求,其中f为为斐波那契数列 那么首先观察一下指数,发现是我们熟悉的形式,可以转化成这样的形式: 令T=kd,且假设n<m,有: 令 则原式= 这样的话我们的步骤就是这样的: 线性筛出莫比乌斯函数,同时递推求出f 然后利用f和莫比乌斯函数求出g(枚举倍 Read More
posted @ 2019-04-10 18:30 lleozhang Views(157) Comments(0) Diggs(0) Edit
非常好的一道莫比乌斯反演题,对提升自己的能力有很大帮助。 首先我们分析一下题意:题意让我们求,其中 那么我们首先对后面的式子进行一下变形,变形过程详见https://blog.csdn.net/lleozhang/article/details/89093689 于是最后变成了这个样子: 但是这个式 Read More
posted @ 2019-04-09 18:50 lleozhang Views(139) Comments(0) Diggs(0) Edit
一道莫比乌斯反演入门题。 首先观察题目要求:的数对数 首先可以发现,这个东西同时有上界和下界,所以并不是很容易计算 那么我们变下形,可以看到:原式= 是不是清晰很多了?(当然没有!) 不,这一步很重要的目的在于消去了下界,使得我们的计算更方便了。 而且可以发现这四个式子的形式是一样的,所以我们对一个 Read More
posted @ 2019-04-08 16:29 lleozhang Views(121) Comments(0) Diggs(0) Edit
憋了好久的游记... 考虑到写游记是oi界的传统,所以还是应该写一篇的。 day0: 上午9:30的火车出发,车上颓三国杀! 中午12:00到了大连,下午2:00才开始试机,还是得先去大连大学,在食堂吃午饭 (食堂真良心,菜量巨大) 下午试机,为什么按字典序排的考号啊...x,y,z集体分在了A区小 Read More
posted @ 2018-11-21 13:25 lleozhang Views(143) Comments(6) Diggs(0) Edit
看了好多篇题解才看懂的题,我实在太菜了... 首先根据一个我不知道的算法,可以证明在没有加入新的边的时候,原图的所有生成树的方案数就是所有点(除1以外)的度之积 那么在新加入这条边之后,我们仍然可以这样计算,但是会产生一种问题:就是会出现环! 所以我们需要利用一些容斥,把不合法的情况去掉 接下来我们 Read More
posted @ 2018-11-06 09:41 lleozhang Views(145) Comments(0) Diggs(0) Edit
levels of contents