裴蜀定理: 内容:若$gcd(a,b)=d$,则一定存在$m,n\in Z$,使$ma+nb=d$且$d$为$ma+nb$的最小正值(狭义) 证明: 令$d=gcd(a,b)$,则对任意$m,n\in Z$,有$d|am+bn$ 设$am+bn$的最小正值为$s$,则令$q=[\frac{a}{s} Read More
posted @ 2020-07-14 21:04 lleozhang Views(55) Comments(0) Diggs(0) Edit
只有博主才能阅读该文。 Read More
posted @ 2019-08-12 15:38 lleozhang Views(161) Comments(0) Diggs(0) Edit
本来早就打算写退役记了,没想到苟到了今天,也是不易了 (可能游记会咕,还是写退役记吧qwq) 也是,作为一个菜的一批高二选手,NOI=退役 在这科竞赛里,我见识到了极限的智慧 我见过了初二玩转高数的神,见过了学了六年的魔,看到了南方一个省全是集训队的高手,而你我,都只是普通人罢了。 我看到了我看不懂 Read More
posted @ 2019-07-19 15:23 lleozhang Views(571) Comments(0) Diggs(0) Edit
1.最小生成树: kruscal: 2.最短路: spfa(最好不要写,他死了)... dijisktra(这个比较好) 3.LCA 倍增版本: 树剖版本: 4.tarjan 有向图tarjan缩点+spfa最长路 无向图割边: 无向图割点: 5.网络流 最大流: 费用流: 有源汇上下界最大流 有源 Read More
posted @ 2019-07-12 15:56 lleozhang Views(143) Comments(0) Diggs(0) Edit
LCT神题... 首先暴力的做法就是每次在一个区间上link,然后暴力查询,时间复杂度$O(爆炸)$ 但是我们可以发现的是,每棵树之间互不影响! 因此我们可以考虑离线之后分别统计每棵树 但是这样做其实并没有优化时空啊! 但是等等,我们在考虑一下:我们的操作都是区间操作,也就是说我们可以用一个类似差分 Read More
posted @ 2019-07-12 10:54 lleozhang Views(76) Comments(0) Diggs(0) Edit
并查集水题 离散化之后直接并查集合并,在不等时判断两者是否在同一个集合內即可 注意排序 贴代码: Read More
posted @ 2019-07-12 09:26 lleozhang Views(82) Comments(0) Diggs(0) Edit
线性基好题 首先,如果一条路径被经过了两次,那么这条路径上的权值等于没有(废话) 基于这一点,我们其实已经找到了解决问题的方法了! 首先,由于可以反复经过一条边,因此我们可以把一条合法的路径看成这样的结构: 从$1$到$n$有一条链,这条链上挂着一些环,答案是链的贡献异或环的贡献(因为从链到环的边一 Read More
posted @ 2019-07-12 09:07 lleozhang Views(60) Comments(0) Diggs(0) Edit
有人说这题像游走... 关于游走的思想,他死了... 明明直接从期望dp的角度考虑更简单合理嘛 首先由于是异或运算不妨逐位考虑 对于每一位,设状态$f[i]$表示从第$i$个点到第$n$个点,这一位上是$1$的概率 那么我们按边权讨论转移: 若这条边边权为$1$:$f[i]+=\frac{1-f[t Read More
posted @ 2019-07-11 17:18 lleozhang Views(64) Comments(0) Diggs(0) Edit
考虑转化问题:一个点相邻元素中有偶数个$1$等价于一个点与相邻元素异或和为$0$ 于是直接列出异或方程组求解即可 注意由于要求不允许出现全0矩阵,因此如果有自由元直接给成$1$ 贴代码: Read More
posted @ 2019-07-11 15:45 lleozhang Views(73) Comments(0) Diggs(0) Edit
很好的一道题,对理解最小割有很大帮助 首先,不难发现本题与网络流24题中的某一道很类似,我们可以先跑一次dp求出每个节点的LIS,然后拆点,拆出的两点之间连流量为删除的代价的边,剩下的点之间按dp的转移连流量正无穷的边,最后跑最小割即为第一问答案 但是第二问有个问题:又引入了一个量要求最小割字典序最 Read More
posted @ 2019-07-11 15:09 lleozhang Views(67) Comments(0) Diggs(0) Edit
这题并不是太难 首先题目我们将每个城市拆点,由源点向一端连容量为初始人数的边,由另一端向汇点连容量为最后人数的边,然后按照题目要求从一端向另一端连容量无穷大的边 这样跑出最大流之后我们只需比较这个流量与总人数是否相等就知道是否合法了 至于输出方案,一个点向另一个点的所有流量都会体现在反向边上,因此我 Read More
posted @ 2019-07-11 11:29 lleozhang Views(174) Comments(0) Diggs(0) Edit
费用流好题 本题的建图很有意思 正常我们看到棋盘问题应该先对整个棋盘黑白染色构成一个二分图,然后再考虑建图的问题 但是本题题目中已经明确区分了不同的斜线,问题在于怎么保证一个"L"形 因此我们进一步分析:显然柱子应该放在有代价的位置,我们应该由这样的位置向上下左右连边,保证有两个就行 但是这样建图是 Read More
posted @ 2019-07-11 10:51 lleozhang Views(73) Comments(0) Diggs(0) Edit
首先题意就是裸的最小割啦 然后考虑如何统计边数 这里有一个trick: 我们设定一个大于$m$的阈值,对于每条边的边权我们乘这个阈值+1后跑最小割,得到的答案除以阈值就是真正的最小割,取模阈值后就是最少割掉的边数 为什么? 我们考虑:设原来的最小割割掉的边权为$v_{1},v_{2}...v_{n} Read More
posted @ 2019-07-11 09:03 lleozhang Views(51) Comments(0) Diggs(0) Edit
思想基本同bzoj 2594,但是多了一步 首先我们发现这时的边有两个属性了,因此我们考虑先去掉其中一者的限制 我们把所有边按$a$大小排序,然后从小到大加入维护的最小生成树 每次加边时都按照$b$的大小操作bzoj 2594,然后更新答案即可 如果始终不联通输出-1 Read More
posted @ 2019-07-10 16:15 lleozhang Views(69) Comments(0) Diggs(0) Edit
很好的一道LCT题目 首先我们可以发现,题目要求的就是最小生成树上的一条树链的最长边的长度,因此我们实际只需动态维护最小生成树即可 然后我们考虑怎么动态维护最小生成树 不难发现,如果涉及在最小生成树上删边,那么这个操作将变得非常复杂,因为我们并不知道删边之后要把什么样的边补充回去才行 但是,如果我们 Read More
posted @ 2019-07-10 16:12 lleozhang Views(45) Comments(0) Diggs(0) Edit
LCT好题 首先我们考虑实际询问的是什么: 从LCT的角度考虑,如果我们认为一开始树上每一条边都是虚边,把一次涂色看作一次access操作,那么询问的实际就是两个节点间的虚边数量+1和子树中的最大虚边数量! 这种问题显然树上容斥,如果设$dis_{i}$表示$i$到根节点需要经过多少虚边,那么答案显 Read More
posted @ 2019-07-10 12:43 lleozhang Views(48) Comments(0) Diggs(0) Edit
LCT板子题... 看到题目中的操作很显然是从$i$向$i+k_{i}$连一条边,每次修改就是删除原来的边再加入一条新的边嘛 然后考虑查询:对于被弹飞的部分,我们统一新建一个节点$n+1$,把所有越过边界的部分指向这个节点即可 然后在查询的时候只需要拎出查询节点到$n+1$节点的树链,统计其大小即可 Read More
posted @ 2019-07-10 10:55 lleozhang Views(58) Comments(0) Diggs(0) Edit
真·小清新... 其实本题正解是动态点分治,但是考虑到那个东西需要先大力推导一波再套上一个幻想乡战略游戏的搞法,所以还不如大力推导一波,然后无脑套上一个树剖+线段树写法... 首先我们考虑没有换根操作: 没有换根操作时,设每次修改的变化量为$\delta$,很显然每次修改时只会影响一条树链上的贡献, Read More
posted @ 2019-07-10 08:57 lleozhang Views(55) Comments(0) Diggs(0) Edit
动态点分治好题 首先我们考虑一个暴力做法: 每次修改之后选一个点作为根搜索整棵树,然后换根dp即可 考虑每次换根时,移向的点的消耗会减少子树代价之和*边权,而其余部分代价会增加剩余代价*边权 这样每次换根都是$O(1)$的,总时间复杂度$O(nm)$,可以通过...20分! 贴代码: 然后我们考虑正 Read More
posted @ 2019-07-09 20:48 lleozhang Views(52) Comments(0) Diggs(0) Edit
首先仍然是点对之间的问题,让我们考虑点分 由于带修改,所以考虑动态点分治 所谓动态点分治,就是在操作之前先模拟一遍点分治的过程构造出一棵新的树,我们称这棵树为点分树,由于这棵树树高是对数级别的,所以修改的时候可以在一条树链上暴力修改 然后考虑本题怎么维护: 首先我们考虑答案如何统计:在统计答案时,我 Read More
posted @ 2019-07-09 19:23 lleozhang Views(55) Comments(0) Diggs(0) Edit
点分治好题 统计距离正常点分治统计即可,我们只需考虑何时达到最优 有两种情况: 第一:代价最大的询问两个端点在不同的两个子树中 因为这种情况下,无论根向那个子树移动都会等价地增加到达另一个端点的代价,因此此时总代价已经达到最小 第二:代价最大的询问有多组,且这些点不在同一棵子树中 同情况一,如果我们 Read More
posted @ 2019-07-08 21:39 lleozhang Views(60) Comments(0) Diggs(0) Edit
太久没碰点分治的我看见这题已经失了智... 首先这种统计肯定要想一想点分,当然也有树形dp的做法,不过还是用点分吧... 我们每次找到一个根,然后统计以这个根为中心,模3为0,1,2的路径数量(这一点可以直接搜索),然后做个卷积统计一下即可 但是可能会出现重复的情况,重复来源于这种时候: 如图所示, Read More
posted @ 2019-07-08 19:55 lleozhang Views(55) Comments(0) Diggs(0) Edit
首先我们考虑$n$的情况,显然以$n$为分界线可以将整个序列分成两部分,就像这样: 、 那么我们考虑:在这个东西前面才会有前缀最大的统计,在这个东西后面才会有后缀最大的统计 这样就剩下了$n-1$个元素,而我们需要把这$n-1$个元素分成$A+B-2$个集合,然后把每个集合的最大的一个放在一端,然后 Read More
posted @ 2019-07-08 18:46 lleozhang Views(51) Comments(0) Diggs(0) Edit
题意:求$\sum_{i=1}^{n}\sum_{j=1}^{n}lcm(i,j)^{gcd(i,j)}$ 神仙题... 首先可能会想到一个转化,就是$lcm(i,j)=\frac{ij}{gcd(i,j)}$ 然后大力往下推式子,发现你推不下去了... 因为$d$在分母上!!! 然后我们考虑换一种 Read More
posted @ 2019-07-08 14:37 lleozhang Views(63) Comments(0) Diggs(0) Edit
题意:求$\sum_{i=1}^{n}\sum_{j=1}^{n}d(ij)$ 首先推一发式子: $\sum_{i=1}^{n}\sum_{j=1}^{n}d(ij)$ 有一个结论:$d(nm)=\sum_{i|n}\sum_{j|m}[gcd(i,j)\equiv 1]$ 然后代入,得: $\su Read More
posted @ 2019-07-08 11:54 lleozhang Views(118) Comments(0) Diggs(0) Edit
莫比乌斯反演 还是推式子: 设$f(n)=n^{k}$ 那就是上一道题了 推的过程如下: $\sum_{i=1}^{a}\sum_{j=1}^{b}f(gcd(i,j))$ $\sum_{i=1}^{a}\sum_{j=1}^{b}\sum_{d=1}^{min(a,b)}[gcd(i,j)\equ Read More
posted @ 2019-07-08 11:04 lleozhang Views(106) Comments(0) Diggs(0) Edit
奇怪的莫比乌斯反演... 题意:定义$f(n)$表示将$n$质因数分解后质因子的最高幂次,求$\sum_{i=1}^{a}\sum_{j=1}^{b}f(gcd(i,j))$ 首先肯定是反演嘛... 推一发式子: $\sum_{i=1}^{a}\sum_{j=1}^{b}f(gcd(i,j))$ $ Read More
posted @ 2019-07-08 10:22 lleozhang Views(101) Comments(0) Diggs(0) Edit
emmmm... 做这题之前强烈推荐先去写一下压位高精度加法,压十八位就行... 然后有一个东西叫序列自动机,其实就是一个指针,用$n*|字符集|$的时空找到每个字符的下一次出现位置 然后如果想找到两个字符串的所有公共子序列只需要在序列自动机上dfs即可 重点看代码: Read More
posted @ 2019-07-08 07:48 lleozhang Views(58) Comments(0) Diggs(0) Edit
这是个假题吧... 首先显然上虚树了 然后我们考虑一下最优策略: 如果虚树两节点都是关键点,那么这两点之间至少选一个 如果一个节点本身是关键点,那么我们必须覆盖下下面所有点 如果一个节点本身不是关键点,那么这个点可选可不选,这一点要基于下面有多少个上来来决定 也就是说,我们在虚树上dfs的过程中需要 Read More
posted @ 2019-07-07 21:30 lleozhang Views(198) Comments(0) Diggs(0) Edit
显然dp嘛 首先我们发现,蓝线的连接方式是有限的,具体的,对于每一个节点,其实只有两种可能的连线方式: 第一种:该节点是新来的节点,两个子节点是初始红线的两侧 第二种:该节点是新来的节点,一个子节点和该节点的父节点是红线的两侧 但是,初始是有一个节点的,因此我们考虑进行树形dp时以这个点为根 如果我 Read More
posted @ 2019-07-07 20:11 lleozhang Views(47) 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(54) Comments(0) Diggs(0) Edit
神题啊... 首先我们考虑68分的暴力: 对于询问串的每个位置$i$,我们维护一个$lim_{i}$表示以$i$为终点向前至多能与模式串匹配多长,这一点可以在把询问串放在模式串的后缀自动机上跳跃得到 接下来考虑统计答案: 对于询问串同样建起一个后缀自动机,我们知道后缀自动机上的每个节点维护的位置是一 Read More
posted @ 2019-07-05 20:48 lleozhang Views(75) 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(167) 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(168) Comments(0) Diggs(0) Edit
不想写题解...这题就是在跑最短路的时候记录下每个点最短路树上可能的父亲,然后把每个点的父亲数量乘起来就行了 代码: Read More
posted @ 2019-07-04 15:02 lleozhang Views(45) Comments(0) Diggs(0) Edit
考虑容斥,容斥系数-1 首先不难发现,如果没有一个公司一条边这个限制的话,就是一个很简单的矩阵树定理了 可是有了这个限制,就会出现重复 因此我们用容斥原理来解决 我们枚举哪个(些)公司没被用到,对剩下的公司跑矩阵树定理,乘一个容斥系数累计贡献即可 时间复杂度$O(n^{3}2^{n})$ 代码: Read More
posted @ 2019-07-04 15:01 lleozhang Views(60) Comments(0) Diggs(0) Edit
线段树优化建图板子题 首先暴力建图显然是不可取的,但是我们发现建图要求是点和区间之间的问题,所以考虑用线段树优化 但是怎么优化呢? 如果用一棵线段树很难处理同时出边和入边,因此我们考虑用两棵线段树(类似拆点),一棵线段树作为起点,另一棵线段树作为终点,然后在两棵线段树之间连边即可 这样的话连边的方式 Read More
posted @ 2019-07-04 11:01 lleozhang Views(282) Comments(0) Diggs(0) Edit
考察后缀自动机的性质:每个节点上维护的子串数量等于自己与父节点的$len$之差 据此,我们在建后缀自动机的时候,对于每个插入的节点加上他与父节点的$len$之差即可 什么?分裂出来的节点怎么办?无所谓!不累计! 因为假设我们有一个点$p$,其父亲为$f$,分裂出的节点为$q$,那么我们知道,进行这次 Read More
posted @ 2019-07-04 09:51 lleozhang Views(64) 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(70) Comments(0) Diggs(0) Edit
后缀自动机基本应用 对询问串建起后缀自动机,然后建起parent树,做一次子树统计就知道了每个节点代表的字符串出现次数 接下来我们只考虑出现次数等于$k$的那些点,对于任意一个点$p$我们知道他代表的子串长度是连续的,长度范围在$[len_{fa}+1,len_{p}]$之间,那么我们做个差分,最后 Read More
posted @ 2019-07-03 18:43 lleozhang Views(87) Comments(0) Diggs(0) Edit
levels of contents