emmmm... 做这题之前强烈推荐先去写一下压位高精度加法,压十八位就行... 然后有一个东西叫序列自动机,其实就是一个指针,用$n*|字符集|$的时空找到每个字符的下一次出现位置 然后如果想找到两个字符串的所有公共子序列只需要在序列自动机上dfs即可 重点看代码: Read More
posted @ 2019-07-08 07:48 lleozhang Views(154) Comments(0) Diggs(0) Edit
这是个假题吧... 首先显然上虚树了 然后我们考虑一下最优策略: 如果虚树两节点都是关键点,那么这两点之间至少选一个 如果一个节点本身是关键点,那么我们必须覆盖下下面所有点 如果一个节点本身不是关键点,那么这个点可选可不选,这一点要基于下面有多少个上来来决定 也就是说,我们在虚树上dfs的过程中需要 Read More
posted @ 2019-07-07 21:30 lleozhang Views(297) Comments(0) Diggs(0) Edit
显然dp嘛 首先我们发现,蓝线的连接方式是有限的,具体的,对于每一个节点,其实只有两种可能的连线方式: 第一种:该节点是新来的节点,两个子节点是初始红线的两侧 第二种:该节点是新来的节点,一个子节点和该节点的父节点是红线的两侧 但是,初始是有一个节点的,因此我们考虑进行树形dp时以这个点为根 如果我 Read More
posted @ 2019-07-07 20:11 lleozhang Views(150) Comments(0) Diggs(0) Edit
显然dp 考虑每个节点需要考虑的问题: 第一:这个点下面被覆盖的情况 第二:这个点对上面的贡献 据此我们设计状态: $f[i][j]$表示以$i$为根节点的子树中已经覆盖好了下面剩余层,只剩下上面$j$层还没覆盖 $g[i][j]$表示以$i$为根节点的子树中每个点都被覆盖了,而且还能向上覆盖$j$ Read More
posted @ 2019-07-05 21:58 lleozhang Views(161) Comments(0) Diggs(0) Edit
神题啊... 首先我们考虑68分的暴力: 对于询问串的每个位置$i$,我们维护一个$lim_{i}$表示以$i$为终点向前至多能与模式串匹配多长,这一点可以在把询问串放在模式串的后缀自动机上跳跃得到 接下来考虑统计答案: 对于询问串同样建起一个后缀自动机,我们知道后缀自动机上的每个节点维护的位置是一 Read More
posted @ 2019-07-05 20:48 lleozhang Views(168) Comments(0) Diggs(0) Edit
首先我们考虑直接搞 考虑每个元素的贡献,得表达式: $ans=\sum_{i=1}^{n}w_{i}\sum_{j=1}^{n}jC_{n-1}^{j-1}S(n-j,k-1)$ 即枚举每个元素所在集合中元素个数及划分方案数 这个玩意显然是$O(n^{2})$的 有大佬把它化简之后变成了可以直接递推 Read More
posted @ 2019-07-05 10:03 lleozhang Views(266) Comments(0) Diggs(0) Edit
首先我们考虑一个暴力的dp: 我们从小到大加入每个数,当我们加入第$i$个数时,可能产生的逆序对数量是$[0,i-1]$(这个证明考虑把第$i$个数放在哪即可),这样可以列出一个递推式: 设状态$dp[i][j]$表示已经加到了第$i$个数,此时的逆序对个数为$j$,那么有转移:$dp[i][j]= Read More
posted @ 2019-07-04 21:50 lleozhang Views(454) Comments(0) Diggs(0) Edit
不想写题解...这题就是在跑最短路的时候记录下每个点最短路树上可能的父亲,然后把每个点的父亲数量乘起来就行了 代码: Read More
posted @ 2019-07-04 15:02 lleozhang Views(120) Comments(0) Diggs(0) Edit
考虑容斥,容斥系数-1 首先不难发现,如果没有一个公司一条边这个限制的话,就是一个很简单的矩阵树定理了 可是有了这个限制,就会出现重复 因此我们用容斥原理来解决 我们枚举哪个(些)公司没被用到,对剩下的公司跑矩阵树定理,乘一个容斥系数累计贡献即可 时间复杂度$O(n^{3}2^{n})$ 代码: Read More
posted @ 2019-07-04 15:01 lleozhang Views(175) Comments(0) Diggs(0) Edit
线段树优化建图板子题 首先暴力建图显然是不可取的,但是我们发现建图要求是点和区间之间的问题,所以考虑用线段树优化 但是怎么优化呢? 如果用一棵线段树很难处理同时出边和入边,因此我们考虑用两棵线段树(类似拆点),一棵线段树作为起点,另一棵线段树作为终点,然后在两棵线段树之间连边即可 这样的话连边的方式 Read More
posted @ 2019-07-04 11:01 lleozhang Views(450) Comments(0) Diggs(0) Edit
考察后缀自动机的性质:每个节点上维护的子串数量等于自己与父节点的$len$之差 据此,我们在建后缀自动机的时候,对于每个插入的节点加上他与父节点的$len$之差即可 什么?分裂出来的节点怎么办?无所谓!不累计! 因为假设我们有一个点$p$,其父亲为$f$,分裂出的节点为$q$,那么我们知道,进行这次 Read More
posted @ 2019-07-04 09:51 lleozhang Views(173) Comments(0) Diggs(0) Edit
多有趣的一道题啊... 考场上的思路: 首先我们可以通过hash判断出每个$B$类串是几个$A$类串的前缀,从这个$B$类串向对应的$A$类串连边 然后我们直接按支配关系从$A$类串向$B$类串连边,相当于以$B$类串为中转构造了一张$A$类串的图,在这张图上跑一次最长路即可 这样做是40分(所以4 Read More
posted @ 2019-07-04 09:04 lleozhang Views(158) Comments(0) Diggs(0) Edit
后缀自动机基本应用 对询问串建起后缀自动机,然后建起parent树,做一次子树统计就知道了每个节点代表的字符串出现次数 接下来我们只考虑出现次数等于$k$的那些点,对于任意一个点$p$我们知道他代表的子串长度是连续的,长度范围在$[len_{fa}+1,len_{p}]$之间,那么我们做个差分,最后 Read More
posted @ 2019-07-03 18:43 lleozhang Views(194) Comments(0) Diggs(0) Edit
首先发现原来的理解好乱啊...这次换一种理解的方式吧... 设原串为一个长度为$n$的字符串$T$ 我们考虑这个字符串的每一个子串$S$,用一个集合$endpos_{S}$代表$S$在$T$中出现的所有右端点的集合 例:$T="aaabc"$,$S="aaab"$,则$endpos_{S}=${$4 Read More
posted @ 2019-07-03 18:39 lleozhang Views(168) Comments(0) Diggs(0) Edit
首先用splay维护嘛 然后查询的时候就把对应的节点转到根,左子树大小就是排名 然后再做个区间翻转即可 Read More
posted @ 2019-07-02 19:58 lleozhang Views(144) Comments(0) Diggs(0) Edit
splay裸题嘛... 直接按书的编号顺序建splay,然后维护即可 把移动位置变成插入和删除 Read More
posted @ 2019-07-02 13:10 lleozhang Views(118) Comments(0) Diggs(0) Edit
首先是动态dp了嘛... 然后考虑怎么做:首先列出dp方程,大概长这样: $f[i]=min(v[i],\sum f[to])$ 看着不太像动态dp呀... 考虑拿出重儿子的贡献,然后套模型,大概能构造出一个这样的东西: 设$g_{i}=\sum f_{to}[to!=son]$ $\begin{p Read More
posted @ 2019-07-02 08:40 lleozhang Views(191) Comments(0) Diggs(0) Edit
首先我们考虑事件发生的真正的先后顺序 我们考虑在某一个点$f$的子树内有两点$i$,$j$先后在$t_{i}$,$t_{j}$两个时间向上发送信息 那么两者谁会先传到$f$呢? 推个小式子:设$i$先到达$f$,那么一定要满足的条件是$dep_{i}-dep_{f}+t_{i}$<$dep_{j}- Read More
posted @ 2019-07-01 10:15 lleozhang Views(258) Comments(0) Diggs(1) Edit
首先有个思想,就是逐层更新 然后考虑每次查询是查从某一点到根节点的树链上的信息,因此用树链剖分维护即可,处理每个点的对子树中节点的贡献可以区间修改(只需修改这一节点向上的树链即可),然后查询时区间查询,去掉不合法的部分即可 时间复杂度$O(nlog_{2}^{2}n)$,其实本题正解应当是$O(nl Read More
posted @ 2019-06-28 11:17 lleozhang Views(219) Comments(0) Diggs(0) Edit
好神奇的数据结构呀... 首先我们考虑:暴力怎么做? 设状态$dp[j]$表示长度为$j$的序列最后一个数最小是几,如果$j$位置的限制区间为$[l,r]$,那么显然有转移: $dp[j]=l(dp[j-1]<l)$ $dp[j]=dp[j-1]+1(l\leq dp[j-1]\leq r-1)$ Read More
posted @ 2019-06-28 10:08 lleozhang Views(195) Comments(0) Diggs(0) Edit
去年noip题啊... 这题动态dp裸题,因此直接套上去嘛! 动态dp板子看这里 设状态$f[i][0/1]$表示点$i$选/不选的最小花费,转移有 $f[i][0]=\sum f[son][1]$ $f[i][1]=w_{i}+\sum min(f[son][0],f[son][1])$ 同样设一 Read More
posted @ 2019-06-26 20:37 lleozhang Views(127) Comments(0) Diggs(0) Edit
动态dp是一个毒瘤且奇葩的东西... 然而noip2018出了这个东西... 因此... 以一道题为例吧:给出一棵带点权的树,每次修改一个点的点权,查询这棵树的最大权独立集(可以理解为每次询问一遍“没有上司的舞会”) 首先考虑暴力: 设状态$f[i][0/1]$表示以$i$为根的子树,点$i$选或不 Read More
posted @ 2019-06-26 19:04 lleozhang Views(215) Comments(0) Diggs(0) Edit
嗯.. 首先考虑如果只有一次询问我们怎么做 设我们当前有个数集{$S$},进行这一询问,我们怎么处理? 首先不妨假设{$S$}单调不降(如果不是这样的话显然排序并不会影响答案) 那么假设前$i$个数都合法,其能组合出的最大的值为$lim$,那么我们只需比较$S_{i+1}$与$lim+1$的大小就可 Read More
posted @ 2019-06-26 11:14 lleozhang Views(150) Comments(0) Diggs(0) Edit
首先吐槽一下bzoj,这CF原题还做成权限题啊?! 需要注意的是,一个点不能被选中当且进当这个点在第y+1年到现在这一段时间内受到攻击,其余的点都可以被选 然后...其实这题的重点在于...码 思想很简单,先树链剖分,然后建起一棵主席树维护,每次修改就生成一个新版本,这样的话用现在的版本-时刻y的版 Read More
posted @ 2019-06-26 09:52 lleozhang Views(166) Comments(0) Diggs(0) Edit
首先考虑容斥 我们计算出所有没有点在其中的矩形,然后用所有矩形减去这些矩形即可 然后考虑如何计算没有点在其中的矩形 采用扫描线的思想,从上向下一行一行扫,假设我们扫到的行编号是$a$,然后考虑如果左右的列端点是$[l,r]$,那么这一行向上至多能扩展几个矩形呢? 显然,我们要找到区间$[l,r]$中 Read More
posted @ 2019-06-25 16:56 lleozhang Views(250) Comments(0) Diggs(1) Edit
前置技能:曼哈顿距离转切比雪夫距离 曼哈顿距离:已知两点$A(x_{1},y_{1})$,$B(x_{2},y_{2})$,则其曼哈顿距离为$|x_{2}-x_{1}|+|y_{2}-y_{1}|$ 切比雪夫距离:已知两点$A(x_{1},y_{1})$,$B(x_{2},y_{2})$,则其切比雪 Read More
posted @ 2019-06-25 14:13 lleozhang Views(199) Comments(0) Diggs(0) Edit
数据范围很重要!!! 首先观察数据范围,发现我们要修的桥的数量只能是一座或两座,因此我们直接讨论即可 对于在河的一侧的人家,显然花费是一定的,直接累计即可 对于在河两侧的人家,显然过河的花费是一定的,直接累计即可 接下来讨论的所有人都在桥的两侧 首先我们假设只有一座桥,位置为$x$,设对于第$i$个 Read More
posted @ 2019-06-25 10:33 lleozhang Views(146) Comments(0) Diggs(0) Edit
问题:已知一个次数为$n-1$的多项式$F(x)$,求一个多项式$G(x)$满足$G(x)\equiv F(x)^{k}$ 这个...你需要多项式exp 直接推一发式子就可以了: $G(x)\equiv F(x)^{k}$ $G(x)\equiv e^{lnF(x)^{k}}$ $G(x)\equi Read More
posted @ 2019-06-23 21:20 lleozhang Views(464) Comments(0) Diggs(0) Edit
生成函数好题 首先我们对每一种物品(设体积为$v_{i}$)构造生成函数$F(x)=\sum_{j=1}^{\infty}x^{jv_{i}}$ 那么很显然答案就是这一堆东西乘在一起 但是...这个复杂度是$O(nmlog_{2}m)$的,显然不合理 因此我们考虑优化 我们发现,如果我们把所有生成函 Read More
posted @ 2019-06-23 20:02 lleozhang Views(207) Comments(0) Diggs(0) Edit
这一篇是一个专题总结,可能会写很久,希望不会咕掉 一.组合数学: ①.基本公式: 1.排列数公式$A_{n}^{m}=\frac{n!}{(n-m)!}$,表示从$n$个元素中选出$m$个元素并进行全排列的方案数 特别的,当$m=n$时,有$A_{n}^{n}=n!$(规定$0!=1$) 2.组合数 Read More
posted @ 2019-06-22 09:58 lleozhang Views(1565) Comments(0) Diggs(1) Edit
斯特林数好题: 求$\sum_{i=1}^{n}C_{n}^{i}i^{k}$ 首先第二类斯特林数有一个性质: $x^{n}=\sum_{i=0}^{n}S_{2}(n,i)C_{x}^{i}i!$ 那么我们展开原来的表达式,得到: $\sum_{i=1}^{n}C_{n}^{i}i^{k}$=$\ Read More
posted @ 2019-06-21 15:56 lleozhang Views(238) Comments(0) Diggs(0) Edit
容斥好题 首先我们考虑,如果没有节点之间一一对应的限制,我们可以这样$dp$: 设状态$dp[i][j]$表示以$i$为根节点的子树,节点$i$与节点$j$对应的方案数 那么转移就是$dp[i][j]=\prod_{son_{i}}\sum_{k=1}^{n}map[j][k]dp[son_{i}] Read More
posted @ 2019-06-20 20:06 lleozhang Views(211) Comments(0) Diggs(0) Edit
单位根反演好题 题意:求$\sum_{i=0}^{n}C_{n}^{i}S^{i}a_{ i mod 4 }$ 看到$i$ $mod$ $4$这种东西,很显然要分类讨论啦 于是变成了这种形式: $\sum_{d=0}^{3}a_{d}\sum_{i=0}^{n}[$ $i\equiv d$ $mod Read More
posted @ 2019-06-20 17:43 lleozhang Views(295) Comments(0) Diggs(0) Edit
基本形式: 设$f(x)=\sum_{i=0}^{n}a_{i}x^{i}$ 则有$\sum_{i=0}^{n}a_{i}[d|i]=\frac{1}{d}\sum_{p=0}^{d-1}f(w_{d}^{p})$ 在$FFT$中会用到的形式: $f_{i}=\sum_{j=0}^{n-1}\fra Read More
posted @ 2019-06-20 17:04 lleozhang Views(167) Comments(0) Diggs(0) Edit
玄学题... 首先,如果$f_{i}\equiv a$ $mod$ $10^{y}$,那么一定有$f_{i}\equiv a$ $mod$ $10^{y-1}$ 据此我们可以只找出满足$f_{i}\equiv a$ $mod$ $10^{y-1}$的项,然后向上检验即可 可是这样的项是无穷的啊 斐波 Read More
posted @ 2019-06-20 16:37 lleozhang Views(187) Comments(0) Diggs(0) Edit
三倍经验...(然而我并没有氪金所以只能刷一倍...) 考虑在什么情况下两点是合法的: 可以看到,对于红色的点而言,绿色的点是合法的,而黄色的点是不合法的 那么观察一下这几个点的切线把圆分成的这几个弧之间的关系,可以看到:如果两个弧相交但不包含,那么对应的两点合法(比如红色和绿色),剩余情况均不合法 Read More
posted @ 2019-06-20 16:32 lleozhang Views(218) Comments(0) Diggs(0) Edit
首先显然是并查集了 每次连边就是合并两个集合,最后会形成很多连通块,是个森林的结构 考虑在连边的时候加入一个权值表示这条边是第几次被加入图中的,那么每次查询的答案即为$x$到$y$路径上权值最大值 由于并查集按秩合并的复杂度是$O(log_{2}n)$,因此合并时直接按秩合并,查询时暴力向上跳即可 Read More
posted @ 2019-06-20 16:14 lleozhang Views(98) Comments(0) Diggs(0) Edit
二项式反演的公式: 若已知$f(n)=\sum_{i=0}^{n}(-1)^{i}C_{n}^{i}g_{i}$,则有:$g(n)=\sum_{i=0}^{n}(-1)^{i}C_{n}^{i}f(i)$ 一个更常见的公式: 已知$f(n)=\sum_{i=0}^{n}C_{n}^{i}g(i)$, Read More
posted @ 2019-06-19 20:32 lleozhang Views(189) Comments(0) Diggs(0) Edit
首先需要知道二项式反演的一个推论:$f(k)=\sum_{i=k}^{n}C_{i}^{k}g(i)$,则$g(k)=\sum_{i=k}^{n}(-1)^{i-k}C_{i}^{k}f(i)$ 然后我们考虑如果糖果多于药片的比药片多与糖果的多$k$个,那么糖果多于药片的个数应该为$\frac{n+ Read More
posted @ 2019-06-19 20:28 lleozhang Views(134) Comments(0) Diggs(0) Edit
留个位置 本题...一言难尽啊... 首先可以发现,恰好为$S$个的颜色数量为$M=min(\frac{n}{S},m)$ 首先我们设$g(i)$表示至少选了$i$种颜色达到恰好$S$个的方案数,那么$g(i)=C_{m}^{i}(m-i)^{n-iS}\frac{n!}{(S!)^{i}(n-iS Read More
posted @ 2019-06-19 18:25 lleozhang Views(196) Comments(0) Diggs(0) Edit
levels of contents