摘要:
这里不加证明的给出线性规划的矩阵形式和其对偶线性规划的形式。 线性规划一般形式为: \[ \begin{cases} \max CX\\ AX\le B\\ X\ge 0 \end{cases} \] 其对偶形式为: \[ \begin{cases} \min B^{T}Y\\ A^{T}Y\ge 阅读全文
摘要:
SDWC 2.12 T2 这个题按理说应该是比较好想的,可惜我 T1 突然脑血栓不知道如何维护次小值,导致这个题目不知道怎么做。 容易发现限制,向上的上面只能放上面,左边放向左或向上,右边放向右或向上,所以限制就能明显了,整张图相当于上面向上,左边向左,右边向右,下面向下,并且两条主对角线上的限制是 阅读全文
摘要:
简介 自己卷积解决的是一类这样的问题,就两个集合的无交并,用多项式来表示就是: \[ f_{k}=\sum\limits_{i \& j=\varnothing,i|j=k}a_ib_j \] 做法 我们发现,如果没有第一个限制,这个就是一个简单的 FWT 就可以解决,我们考虑一下如何转化第一个限制 阅读全文
摘要:
模拟赛 T1 主要思路是把所有能连的边都连上,然后检查所有必须要连的边有没有连上,然后利用并查集,把所有必须要连的边连上,同时检查有没有环,然后考虑连上剩下的边,最后还需要检查是不是一个连通块。 #include<bits/stdc++.h> #define ll long long #define 阅读全文
摘要:
回滚莫队,这种莫队在不能够删除或者不能够增加的时候使用。通常用于删除和插入只有一个复杂度能够接受的情况下使用,时间复杂度也是 \(O(n\sqrt{n})\)。 下面我们以不插入莫队为例。 首先仍然是分块,如果询问左右端点都在同一个块内,那么我们直接暴力做就可以。我们也可以对整个快预处理,然后删除左 阅读全文
摘要:
发现自己连绿题也不会做了。重点还是一个分析的能力太差。 B B 题有一个单调性非常关键,这个也是一个比较套路自然的想法。然后根据单调性,加上我们可以处理出 \(mex=x\) 的最短区间,于是我们就可以做了。 C 转化。把前 \(k-1\) 大和其余的看做两个集合。那么所谓交换就是把这些第二集合中最 阅读全文
摘要:
这里主要讲一下为什么 merge 函数需要新建节点的问题,以免以后忘掉。其他都是在分裂与更新的时候新建节点的问题。 这张图片是我们执行分裂后,\(9,4\) 分别是我们分裂出来的两颗子树。 然后我们考虑对 \(9,4\) 执行合并操作。因为 \(9,10,4\) 使我们新建的节点,所以我们他们的 \ 阅读全文
摘要:
类似于轻重链剖分,也有一种树链剖分方式叫做长链剖分,每次我们选子树深度最大的节点当做重儿子,注意这里子树深度是指一棵子树中所有结点的深度最大值。 有以下性质: 一个节点的 \(k\) 级祖先所在链的长度一定大于等于 \(k\)。 比较显然。因为如果小于 \(k\) 的话就会选从那个祖先到这个节点的路 阅读全文
摘要:
kahan 算法 kahan 算法使用来减少浮点数计算误差的。 众所周知,因为存储空间原因,浮点数之间的加法满足交换律但并不满足结合律,会有一定的误差产生。而 kahan 算法的目的是减少误差,具体方法是每一次都记录下来当前的误差,在下一个数中进行修正。 代码: float sum=0.0f,c=0 阅读全文
摘要:
拿到这个题首先我按照以前做题的模板,把每个人看做询问。题目给了两个关键字,我无论通过那个关键字当做第一关键字发现都没有一个好的方法。于是果断直接看题解。 这个题的难点在于第一步:是否能想到用数据结构去维护钱。 我们用一个平衡树去维护钱,剩下的就很好想了,有之前排序的基础,我们很容易想到按照质量排序, 阅读全文