摘要:
本题可以用并查集求同构的原因是,每个点只能和两个点相连,因此只有环和链两种情况,没有其他的种类。 首先我们知道同构就是有相同个数长度的的链和相同个数长度的环。这样我们在并查集只需要维护两个信息。 一个是集合大小,一个是有没有环。因为环只可能在头尾节点,所以只需要把环记录在我们并查集的根节点就行了。就 阅读全文
摘要:
经典容斥原理,这其实是离散数学解不定方程或者高中组合数学的隔板法。 原问题可以转换为 x1+x2+x3+...xn=M+N; 又因为每个都有限制需要<=a[i],因此我们可以反向考虑,总数-不合法数 而不合法数是所有>a[i]的合集,因此可以用容斥原理拆分,这里可以用二进制的表示方法表示取哪几个。 阅读全文
摘要:
本题是并查集删点的经典例题,并查集删点操作的核心就是虚点,利用res数组映射新点,这样就不会对原来的内容造成干扰。 例如 1,2,3,4 ,这些点再普通操作下变成一个集合,根节点是4。 那么如果我们要删除4,我们考虑将4映射到5上,值得一提的是,不是直接把p[4]=5 而是我们在刚开始就设置一个re 阅读全文
摘要:
首先提取题目信息,我们需要计算朋友的关系,以及计算不开心值。 其实看题目我们很容易就有并查集的感觉,之后我们要去验证这个算法是正确的 题目要求的是求不开心值,那么我们就可以想到使用并查集求集合总数就可以了 虽然朋友不存在传递性,但是这并不影响不开心值的大小,因为如果a和b是朋友,b和c是朋友 那么虽 阅读全文
摘要:
本题从题目给出的条件我们发现了最小生成树的影子,也就是kruscal的影子 其实我们在写kruscal的时候就是利用并查集的思想来写的 这题需要注意的是,我们在求取的过程中l并不需要减少,我们只要最小生成树中的最大边权小于等于l就行了 这就让我们想到了可以从小到大对边权排序,之后枚举维护树集合,如果 阅读全文
摘要:
分析: 本题最重要的是通过向量的想法来解决这一类关系,这样思维难度大大降低,首先我们明白一点 根据传递性的定义(也就是离散数学中的传递性),x->y =x->z+z>y 我们要知道的一点是,并查集中的题目都是有传递性的,而传递性的题目并不一定能通过并查集解决 我们知道我们要将两个不同的集合合并,就是 阅读全文
摘要:
这道理重要的想法就是利用并查集缩点,将所有相等的点缩成同一个点 因为如果不缩点,那么如果两个数相等,其他的数与他们中任意一个数有关系,就需要把相等的数的关系也都连上,也就是加边。这样十分复杂 我们又可以发现,如果缩点,因为每个点本身有rp值,所以缩成的点能排序的话,原先也可以。就是基于这个原理证明的 阅读全文
摘要:
本题一个很巧妙的设计就是dp状态,设计为f[l][r][i][j],从l-r,左右端点是哪个 这样就可以通过递归来计算小区间的值 记住,要先进行字符串的匹配,也就是常规的括号进出栈问题,记录下来每个左括号匹配的右括号的位置 网上有些记录了右括号的匹配左括号是谁,其实没有必要,因为用不大,大概是因为第 阅读全文
摘要:
这题相当的精彩,写完这个对码力和思维都有很大的提升。 题目的意思是stan先画竖线,oll画横线且过stan的一个点,stan先画,因为两个人都想赢,oll后画,所以oll肯定会在stan的基础上找最大的,那么stan所求的自然是最小的情况,因为总点数是固定的 但是stan也想赢,所以他可以决定竖线 阅读全文
摘要:
这题用容斥定理做会代码简单不少,但是一个是我数学不好,另一个我感觉这就是个扫描线模板题 首先也是求面积并,但是本题不是所有的矩形都用得到,我们根据题目的询问来用vis存储用得到的矩形 注意,因为我们已经离散化了,所以当前的矩形不是原先的矩形排序,而询问的时候是告诉我们原先矩形的位置,所以我们在输入的 阅读全文