这是个假题吧... 首先显然上虚树了 然后我们考虑一下最优策略: 如果虚树两节点都是关键点,那么这两点之间至少选一个 如果一个节点本身是关键点,那么我们必须覆盖下下面所有点 如果一个节点本身不是关键点,那么这个点可选可不选,这一点要基于下面有多少个上来来决定 也就是说,我们在虚树上dfs的过程中需要 Read More
posted @ 2019-07-07 21:30 lleozhang Views(298) Comments(0) Diggs(0) Edit
显然dp嘛 首先我们发现,蓝线的连接方式是有限的,具体的,对于每一个节点,其实只有两种可能的连线方式: 第一种:该节点是新来的节点,两个子节点是初始红线的两侧 第二种:该节点是新来的节点,一个子节点和该节点的父节点是红线的两侧 但是,初始是有一个节点的,因此我们考虑进行树形dp时以这个点为根 如果我 Read More
posted @ 2019-07-07 20:11 lleozhang Views(154) 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(164) Comments(0) Diggs(0) Edit
神题啊... 首先我们考虑68分的暴力: 对于询问串的每个位置$i$,我们维护一个$lim_{i}$表示以$i$为终点向前至多能与模式串匹配多长,这一点可以在把询问串放在模式串的后缀自动机上跳跃得到 接下来考虑统计答案: 对于询问串同样建起一个后缀自动机,我们知道后缀自动机上的每个节点维护的位置是一 Read More
posted @ 2019-07-05 20:48 lleozhang Views(169) 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(271) 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(462) Comments(0) Diggs(0) Edit
不想写题解...这题就是在跑最短路的时候记录下每个点最短路树上可能的父亲,然后把每个点的父亲数量乘起来就行了 代码: Read More
posted @ 2019-07-04 15:02 lleozhang Views(122) Comments(0) Diggs(0) Edit
考虑容斥,容斥系数-1 首先不难发现,如果没有一个公司一条边这个限制的话,就是一个很简单的矩阵树定理了 可是有了这个限制,就会出现重复 因此我们用容斥原理来解决 我们枚举哪个(些)公司没被用到,对剩下的公司跑矩阵树定理,乘一个容斥系数累计贡献即可 时间复杂度$O(n^{3}2^{n})$ 代码: Read More
posted @ 2019-07-04 15:01 lleozhang Views(178) Comments(0) Diggs(0) Edit
线段树优化建图板子题 首先暴力建图显然是不可取的,但是我们发现建图要求是点和区间之间的问题,所以考虑用线段树优化 但是怎么优化呢? 如果用一棵线段树很难处理同时出边和入边,因此我们考虑用两棵线段树(类似拆点),一棵线段树作为起点,另一棵线段树作为终点,然后在两棵线段树之间连边即可 这样的话连边的方式 Read More
posted @ 2019-07-04 11:01 lleozhang Views(453) Comments(0) Diggs(0) Edit
考察后缀自动机的性质:每个节点上维护的子串数量等于自己与父节点的$len$之差 据此,我们在建后缀自动机的时候,对于每个插入的节点加上他与父节点的$len$之差即可 什么?分裂出来的节点怎么办?无所谓!不累计! 因为假设我们有一个点$p$,其父亲为$f$,分裂出的节点为$q$,那么我们知道,进行这次 Read More
posted @ 2019-07-04 09:51 lleozhang Views(174) 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(160) Comments(0) Diggs(0) Edit
后缀自动机基本应用 对询问串建起后缀自动机,然后建起parent树,做一次子树统计就知道了每个节点代表的字符串出现次数 接下来我们只考虑出现次数等于$k$的那些点,对于任意一个点$p$我们知道他代表的子串长度是连续的,长度范围在$[len_{fa}+1,len_{p}]$之间,那么我们做个差分,最后 Read More
posted @ 2019-07-03 18:43 lleozhang Views(198) 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(169) Comments(0) Diggs(0) Edit
首先用splay维护嘛 然后查询的时候就把对应的节点转到根,左子树大小就是排名 然后再做个区间翻转即可 Read More
posted @ 2019-07-02 19:58 lleozhang Views(146) 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(192) 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(261) Comments(0) Diggs(1) Edit
首先有个思想,就是逐层更新 然后考虑每次查询是查从某一点到根节点的树链上的信息,因此用树链剖分维护即可,处理每个点的对子树中节点的贡献可以区间修改(只需修改这一节点向上的树链即可),然后查询时区间查询,去掉不合法的部分即可 时间复杂度$O(nlog_{2}^{2}n)$,其实本题正解应当是$O(nl Read More
posted @ 2019-06-28 11:17 lleozhang Views(221) 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(196) 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(128) Comments(0) Diggs(0) Edit
动态dp是一个毒瘤且奇葩的东西... 然而noip2018出了这个东西... 因此... 以一道题为例吧:给出一棵带点权的树,每次修改一个点的点权,查询这棵树的最大权独立集(可以理解为每次询问一遍“没有上司的舞会”) 首先考虑暴力: 设状态$f[i][0/1]$表示以$i$为根的子树,点$i$选或不 Read More
posted @ 2019-06-26 19:04 lleozhang Views(216) Comments(0) Diggs(0) Edit
嗯.. 首先考虑如果只有一次询问我们怎么做 设我们当前有个数集{$S$},进行这一询问,我们怎么处理? 首先不妨假设{$S$}单调不降(如果不是这样的话显然排序并不会影响答案) 那么假设前$i$个数都合法,其能组合出的最大的值为$lim$,那么我们只需比较$S_{i+1}$与$lim+1$的大小就可 Read More
posted @ 2019-06-26 11:14 lleozhang Views(155) Comments(0) Diggs(0) Edit
首先吐槽一下bzoj,这CF原题还做成权限题啊?! 需要注意的是,一个点不能被选中当且进当这个点在第y+1年到现在这一段时间内受到攻击,其余的点都可以被选 然后...其实这题的重点在于...码 思想很简单,先树链剖分,然后建起一棵主席树维护,每次修改就生成一个新版本,这样的话用现在的版本-时刻y的版 Read More
posted @ 2019-06-26 09:52 lleozhang Views(167) Comments(0) Diggs(0) Edit
首先考虑容斥 我们计算出所有没有点在其中的矩形,然后用所有矩形减去这些矩形即可 然后考虑如何计算没有点在其中的矩形 采用扫描线的思想,从上向下一行一行扫,假设我们扫到的行编号是$a$,然后考虑如果左右的列端点是$[l,r]$,那么这一行向上至多能扩展几个矩形呢? 显然,我们要找到区间$[l,r]$中 Read More
posted @ 2019-06-25 16:56 lleozhang Views(260) 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(201) Comments(0) Diggs(0) Edit
数据范围很重要!!! 首先观察数据范围,发现我们要修的桥的数量只能是一座或两座,因此我们直接讨论即可 对于在河的一侧的人家,显然花费是一定的,直接累计即可 对于在河两侧的人家,显然过河的花费是一定的,直接累计即可 接下来讨论的所有人都在桥的两侧 首先我们假设只有一座桥,位置为$x$,设对于第$i$个 Read More
posted @ 2019-06-25 10:33 lleozhang Views(154) 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(482) 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(212) 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(1679) 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(239) 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(215) 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(298) 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(169) 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(190) Comments(0) Diggs(0) Edit
三倍经验...(然而我并没有氪金所以只能刷一倍...) 考虑在什么情况下两点是合法的: 可以看到,对于红色的点而言,绿色的点是合法的,而黄色的点是不合法的 那么观察一下这几个点的切线把圆分成的这几个弧之间的关系,可以看到:如果两个弧相交但不包含,那么对应的两点合法(比如红色和绿色),剩余情况均不合法 Read More
posted @ 2019-06-20 16:32 lleozhang Views(226) Comments(0) Diggs(0) Edit
首先显然是并查集了 每次连边就是合并两个集合,最后会形成很多连通块,是个森林的结构 考虑在连边的时候加入一个权值表示这条边是第几次被加入图中的,那么每次查询的答案即为$x$到$y$路径上权值最大值 由于并查集按秩合并的复杂度是$O(log_{2}n)$,因此合并时直接按秩合并,查询时暴力向上跳即可 Read More
posted @ 2019-06-20 16:14 lleozhang Views(100) 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(197) 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(138) 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(199) Comments(0) Diggs(0) Edit
首先我们需要找出一个朴素的递推来解决这个问题: 设状态$f(i)$表示权值和为$i$的二叉树的数量,$g(i)$表示权值$i$是否在集合中,即$g(i)=[i\in S]$ 枚举根节点和左子树的权值,立刻得到一个递推: $f(n)=\sum_{i=0}^{n}g(i)\sum_{j=0}^{n-i} Read More
posted @ 2019-06-19 15:24 lleozhang Views(157) Comments(0) Diggs(0) Edit
levels of contents