05 2024 档案
摘要:以下考虑完备匹配的必须边(非完备匹配要用到网络流) 给定一张二分图,其最大匹配方案不一定是唯一的。若任何一个最大匹配方案的匹配边都包括 ,则称 为二分图匹配的必须边 以下证明假设我们已经求出了一个最大匹配 在完备匹配时,一条边 是必须边,当且仅当满足以
阅读全文
摘要:这一道题目蓝书上说的有错,不应该用等价这个词 实际上,原图中任意一种连边方案(无论是否相交)与二分图的一个完备匹配构成双射 而由于我们只用求一种方案,又证明了二分图的带权最小匹配一定是不相交的,所以可以这么求 那数据保证有解的意思是什么?原图一定是二分图,也就一定有带权最小匹配啊,为什么数据要保证有
阅读全文
摘要:这道题目最需要关注的就是当我们考虑序列二分的时候,我们就要考虑是否可以双指针
阅读全文
摘要:解释一下具体方案的选择 我们来思考一下如果给了我们最终方案,我们应该如何选择。产生矛盾当且仅当放在同一水平线的对应的两个点同时选择。也就是说我们的方案对于每对放在同一水平线上对应的两个点应该是选择且之选择一个 那么来看蓝书怎么搞的 首先是第一种方法。如果我们按照拓扑正序去做,有可能会导致我们同时选择
阅读全文
摘要:蓝书的操作是强制一个变量的取值,可以记住,这里主要讲一下最后的图到底长成什么样子 显然可以将图分成左右两部,而且可能存在连接两部的边;左右两部的边的方向刚好相反,如下 这其实也不难理解,如果说存在 ,那么当然存在 ;而\
阅读全文
摘要:先来讲一下无向图的欧拉图 像蓝书那个代码跑,由于每个点都有偶度,所以第一次跑到某个点不能再跑的时候(也就是即将回溯的时候),这个点一定是起点,于是就形成了一个环(尽管这个环上面可能有多个重复的点),然后代码就开始回溯,回溯到一个点 的时候,会扫描这个点剩下的边,如果有边没走,会走这条边,而且
阅读全文
摘要:这道题目看起来跟差分约束毫无关系,不要慌,我们一步一步来 首先我们大胆猜想,对任意一条边 ,有 ,其中 数组是最短路数组(这个猜想也比较显然会往这个方向走),而且在此条件下,任意一种边权方案都符合题意 证:以下讨论基于所有点都能从 出发到达
阅读全文
摘要:这种算差值的思想用的真的很多 其实这种思想就是树上差分的第二种形式 也就是说树上差分有两种形式,一种是“闇の連鎖”,另一种就是本题
阅读全文
摘要:引理是怎么样想到的: 我们以军队为考虑对象,假设将所有军队全部移动到根节点,但是我们现在要用决策包容性,也就是说如果某一个节点是被原来的在这个节点上的军队驻扎的话,我们就要把这个军队从根节点上再移动回来,所以可以得出引理 有点反悔贪心的味道了
阅读全文
摘要:蓝书上的做法是基于DP的无后效性的 按照距离从小到大排序之后,相当于新加入的节点就只能当做叶子,如果我们已经求出了只涉及前面的节点的最短路径生成树,加入当前节点之后需要干的工作就是求出只涉及前面节点以及当前节点的最短路径生成树,由于当前节点只能当叶子,所以上述做法有效 也就是说,如果图中存在零边,就
阅读全文
摘要:先看这篇题解 以前写的文字:他讲的第一个证明我花了好久看懂了: 指不在 上的边, 是 上从 到 的一条路径,那么如果 在最后答案的MST上, 上肯定至少有一条边没有被选择,在最终答案的MST删去 后,我们把 上没被选择的
阅读全文
摘要:借助这道题目把wqs二分讲明白 考虑如下一个问题: 现在一共有若干个物品,物品被分成两组,现在从中选出若干个物品,但是题目会给出某种限制(也就是在这种限制条件下,物品的选择不是随意的,所有选择集合中,只有一些集合符合题目给出的限制,这样的集合才可以被选择),这种限制只跟物品本身有关而跟其权值无关(i
阅读全文
摘要:这两个东西写的奇奇怪怪的一堆类都是定义 我们都只会在这些类的定义里面写东西,比如成员函数成员变量啥的 然后运行的时候,系统会自动帮我们创建一个这些类的对象,但是我们找不到这个对象,只会添加槽函数 我们添加的槽函数也是这些类的成员函数,也只是定义
阅读全文
摘要:按照题目来模拟,假设 为最大的,那么任意时刻不可能选中 或者 来操作的 然后就可以发现,我们选出的数一定是不相邻的,也就是说,我们每次在还可以选择的数中找出最大的数(满足此条件下下标最小),并且把相邻的两个数标记为不可选择,一直重复这个过程直到为\
阅读全文
摘要:这道题目肯定是考虑维护前驱了(注意不用前驱后继都维护) 但是注意,这里的前驱定义为位置 前面第一个与 加起来为 的位置 然后就会出现这篇题解所说的情况 这篇题解也给了解决方案,由贪心易证,就是注意此时一定不要超时了 所有影响的位置: 考虑前驱受到影响的位置一定在当前修改位置的
阅读全文
摘要:法一:仍然是乱搞 法二:看这篇题解 等差数列任意两项的差一定是公差的倍数,这个好像对于等差数列挺常用的,我记得哪一道数论也有这个方法 判断一比较显然,判断二是因为我们显然不能对这个序列真的排序(排序只有 序列可以比较快速地排序),所以只能维护相邻的东西,等差数列嘛所以维护相邻的差,于是想到
阅读全文
摘要:法一:首先记住这种看起来没办法维护的东西,我们可以用随机化搞法。也就是说以后不要一直想着精确的正解了 考虑利用哈希思想。显然区间最大值减去最小值为区间长度这是必要条件。在此前提下,我们从以下几个选项选出几个维护就好了:区间和,区间平方和,区间立方和,区间异或和(这道题目也用了类似的思想) 法二:显然
阅读全文
摘要:总算给我看懂到底是什么意思了。。。 首先我们来考虑按照时间+扫描线进行处理,假设操作如下 黑色是加操作,黄色是乘操作,绿色是加操作,对于红色那条线所代表的点,随着时间的流逝,首先在刚刚进入黑色的时候,这一点的值就被加上了一个数,然后刚刚进入黄色的时候,这一点的值就被乘上了一个数,刚刚进入绿色的时候,
阅读全文
摘要:这里磁力块不会被重复吸引才有了蓝书上的trick,如果可以怎么办? 按某一维排序之后利用这篇题解的做法
阅读全文
摘要:这道题目是不能用“天天爱跑步”这道题目的技巧的,因为不满足可加性 所以必须要给每个节点都开一个 维数组 线段树合并的作用就是数组相加,所以可以考虑线段树合并
阅读全文
摘要:非常好的一道练习懒标记的题目(这种题目就叫做多标记题目) 我们先不考虑维护总和,先分别维护两个量, 表示 号节点所代表区间的点的权值, 表示 号节点所代表区间的点的距离和, 表示 号节点权值的懒标记, 表示\(p\
阅读全文
摘要:注意这里lazy标记是必须的,不要认为每次修改的区间要么是从全 变全 要么是从全 变全 就不用lazy标记了 想想我们不用lazy标记的题目“Atlantis”,因为我们只关心根节点的值所以不用lazy标记(从lazy标记的作用来说,根节点根本就不用lazy标记);而
阅读全文
摘要:连续区间问题的代码都像打卡代码那样子写,是最有通用性的 这道题目的查询也没办法像老板那样子写,还是因为我们没有办法判断左端/右端的最大连续子段和是否超过了当前区间 还有理解这个代码的时候,不要去纠结递归的细节问题,就把函数看成一个问题,即 int ask(int p,int l,int r,int
阅读全文
摘要:B题 比较水的一道题目,主要是读题 注意是每个水平线都是 用的就是找每一个数最近的比其大的数,用单调栈
阅读全文
摘要:这题显然可以依次枚举最后一个结束钓鱼的池塘, 让后我们先减去路上走的所有路程 然后就可以用前面几道题目的思路,相当于每个鱼塘是一个类别,从所有类别中取出最大值,再将后继加入 另外说一个代码细节,好想priority_queue是不能重载运算符的,而且必须对第一分量排序
阅读全文
摘要:就像蓝书所说的,这道题目就是huffman编码 证明一下等价性 首先,对于任意一个题目中的构造方式,相当于构造了一个trie树,而且这个trie上的标记都是叶节点,显然这个trie可以对应一个huffman树 其次,对于任意一个huffman树,也可以用同样的方法搞出一个trie树 所以两者双射
阅读全文
摘要:借助这一道题目来严谨证明一下Huffman树的构造方法的正确性 对任意一颗 叉huffman树,他都可以等价于一个类似于合并果子的过程,即每次取出最多 个点进行合并,然后 个点的权值和就是新的点的权值,然后把这个新的点加入决策集合,最终操作的只剩下一个点。不难证明,huffm
阅读全文
摘要:蓝书上的错误原因在不一定有 ,因为减号不一定能够移进移出,但是加号可以 我们现在要证明的就是\(x_1-\lfloor px_1\rfloor≥x_2-\lfloor p(x_2+q)\rfl
阅读全文
摘要:这道题目如果不转化的话,长方形也可以通过单调栈做,正方形要深度思考了DP的方法看能不能做 然而介绍一种trick,当二维平面考虑相邻格子的时候可以考虑这个trick update 2024.6.25 正方形也可以用经典DP的方法做,见下 #include<bits/stdc++.h> #define
阅读全文
摘要:两种理解方法:法一,法二 这两种理解方法的本质都是一样的,将第二种理解方法的 化简为只用 的表达式然后代入第二个递推方程中就是法一的方程 update 2025.1.7 对于法一来说,其实是物理中一个很重要的思想,即整体法。将前 个玻璃全部当成一个玻璃,这个玻璃有
阅读全文
摘要:这一道题目最好记住,就是两个模数之间在互相作用 首先转化一下,我们枚举其中一个集合然后快速查询另一个集合 也就变成了 然后看这篇文章的建模 解释一下 它是将 中的每一个数弄成一个环,就像下面这样 然后加一个 就相当于瞬时间走
阅读全文
摘要:首先这个约数公式要记住,具体见这篇题解 然后剩下的就是比较简单的套路操作了,最后会化出来 \[\sum_{d=1}^{min(n,m)}\sum_{d|x}\sum_{d|y}\lfloor\frac{n}{x}\rfloor\lfloor\frac{m}{y}\rfloor u(d)=\sum_{
阅读全文
摘要:法一:数论容斥 注意一个很重要的结论:对任意一个区间 ,从中选出两个及以上的数并求gcd,那么结果不可能大于 ,用更相减损术证明就好了(所以使用数论容斥的时候一定要把上界估明白) 于是我们现在只用知道 内的每个数在区间 中有多少个数是其倍数
阅读全文
摘要:我们首先直接根据题目列式子,对位置 ,其在数表上的值为 ,很显然就是 我们先不考虑 的限制,题目的答案就是 \[\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{n|gcd(i,
阅读全文
摘要:这道题目的思路跟“反质数”是一样的,但是这道题目要用高精 然而直接用高精是要超时的,所以要像题解一样用log,然后先用低精度计算,存储每一个质因子的指数,最后再用高精 然后代码里面有高精度的封装结构体 update 2024.8.4 别用dfs了,已经被hack了 正解是DP,见这篇题解 其实贪心行
阅读全文
摘要:莫比乌斯反演入门题目,但是先从容斥的角度理解这道题目 由于这道题目 的值在多组询问里可以不同,所以不用数论容斥,换一个角度,考虑把 除进去然后互质 所以主要就是解释一下 是怎么推导的 我们从容斥原理的角度考虑。对于任意一个二元组 ,如果\(gcd
阅读全文
摘要:多个数的异或最大值,考虑线性基;树上静态路径问题,考虑点分治 于是不难得到,在某一次分治的时候,处理lca为当前根的所有询问。具体地,求出每个点到当前根的线性基,然后对于一对点,暴力合并两个线性基(也就是两个向量组的并集的极大无关组等于两个向量组的极大无关组的并集的极大无关组)即可。注意这里判断lc
阅读全文
摘要:稍微分析一下题目就可以知道,先手第一轮取完之后一定是极大无关组,此时必胜 这里介绍一些异或空间线性基的性质,跟普通的线性基是差不多的 首先,线性基中任意多个数(或者换个说法,任意一个非空子集)异或起来一定不为 (否则的话某一个数可以被其他数线表) 其次,同一异或空间不同线性基的个数是一样的
阅读全文
摘要:这道题目的思路比较好 由于 到 的路径很多,我们猜想,任意选一条路径可以通过某种异或运算来得到最优解 证明:假设我们选出的路径不是最优路径,那么对于另一条最优路径,一定可以通过我们选出的路径异或上若干个简单环来达到。举个例子说明 假设我们选出的是直线段 ,最优的路线是\(A
阅读全文
摘要:讲一下我的做法,不按照行向量考虑而是按照列向量考虑,将所有的 全部变成列向量然后进行初等行变换 我们先不管 的顺序,直接进行初等行变换,最后化出来一个行简化梯形矩阵,很显然的一个极大无关组就是每个非零行的第一个非零元所在的列(也就是非自由元所在的列) 于是一个很自然的想法就是我们先将
阅读全文
摘要:手搓样例可以看出来规律 官方解答的证明是真看不懂
阅读全文
摘要:这道题目告诉我们的是,看到 非常小,不一定是搜索,也不一定是状压,还有可能是枚举是否操作 考虑枚举每个不操作的位置,这些位置将序列分成若干个连续段,每一段里面的数字一定会被操作至少一次 当一个数字被操作了至少一次之后,他的值就不会比某次操作的区间长度大,于是我们猜想,一个段里面的所有数字都有
阅读全文