ICode9

精准搜索请尝试: 精确搜索
  • leetcode1627 带阈值的图连通性2021-04-29 11:33:48

    思路: 埃氏筛法+并查集。 实现: 1 class DSU 2 { 3 vector<int> p; 4 public: 5 DSU(int n) 6 { 7 p.resize(n); 8 for (int i = 1; i < n; i++) p[i] = i; 9 } 10 int find(int x) 11 { 12 if (p[x] == x) return x;

  • 小 Q 与树(dsu on tree + segment tree)牛客练习赛 81 D2021-04-27 20:32:29

    小 Q 与树 给定一棵带权的树,每条边的距离都为 1 1 1,要我们求 ∑ u

  • [HDU3151]Cave Crisis2021-04-05 21:01:10

    XXX.[HDU3151]Cave Crisis 一眼看上去跟XII.[ABC181F]Silver Woods完全一致,因此考虑一样的思路。 于是我们现在问题变为求出两个多边形间的距离。 首先先考虑如何判断它们是否有交。有交只有一种可能,就是边有交。于是我们枚举两个多边形所有的边,然后判断它们是否有交。具体而言,我

  • [AHOI2018初中组]球球的排列2021-03-30 15:33:22

    IX.[AHOI2018初中组]球球的排列 论DP的百种用法之一 因为DP必须有一种全面的状态,但是这道题……似乎排列等等问题都不是DP擅长处理的地方。 首先分析性质。我们发现,这种不能放在一起的关系具有传递性。因为如果\(xy=a^2,xz=b^2\),那么\(yz=\dfrac{(xy)(yz)}{x^2}=\dfrac{a^2b^2}{x^

  • 阔力梯的树2021-03-15 19:35:28

    阔力梯的树 题面 点击查看 题解 树上问题, 树链剖分, lca变成线性, 点分治, 点分树, dsu on tree 这道题是 dsu on tree, 还是要用时间戳这个好东西, 可以维护子树 然后就是加子树入编号影响的问题, 用set维护就好了 int n, m, _, k, cas; VI h[N]; int dfn[N], low[N], df, son[N

  • 并查集2021-03-01 16:03:47

    并查集(Disjoint Set Union)模板 #include <vector> using namespace std; /** * Disjoint Set Union */ class DSU { vector<int> s; int cnt; // 记录集合个数 public: DSU(int n) { cnt = n; s.resize(n+1); for (int i = 1; i &

  • LeetCode题解(1361):验证二叉树(Python)2021-02-21 11:33:22

    题目:原题链接(中等) 标签:并查集、图 解法时间复杂度空间复杂度执行用时Ans 1 (Python) O ( N )

  • [CF208E] Blood Cousins - dsu on tree, LCA2021-01-30 14:02:51

    [CF208E] Blood Cousins - dsu on tree, LCA Description 给你一片森林,每次询问一个点与多少个点拥有共同的 K 级祖先。 Solution dsu on tree 首先,求出一个点的 k 级祖先,并且把询问挂在他身上,问的就是这个点 p 子树内有多少个深度为 d 的点 在 dfs 过程中,对每个点,递归处理各个孩

  • 全球首例银行“大型机”下移背后2021-01-29 17:32:10

    20年12月24日,在腾讯云数据库品牌升级的时刻,我们也有幸邀请到了平安银行技术负责人李中原分享平安银行分布式数据库TDSQL实践,讲述全球首例银行“大型机”下移背后的故事,以下是平安银行技术负责人李中原的演讲全文: 尊敬的各位领导,各位来宾大家下午好,我是平安银行技术负责人李中原,今

  • Blood Cousins dsu on tree + k祖先查询2020-12-06 13:31:44

    题意 给出一棵家谱树,定义从 u 点向上走 k 步到达的节点为 u 的 k-ancestor。多次查询,给出 u k,问有多少个与 u 具有相同 k-ancestor 的节点。 分析 这个问题我们可以离线去查询 首先我们先把每一个查询节点的k-ancesto处理出来,然后就把这个问题转化成求节点x的子树中,比他深度

  • codeforces 600E - Lomsat gelral (dsu on tree)2020-12-03 20:33:16

    题目链接:https://codeforces.com/problemset/problem/600/E 一直没有点这个技能点,今天跟队友打训练赛,碰到一道 \(dsu\ on\ tree\) 的题写不出来,就回来把这个题写了 \(dsu\ on\ tree\) 运用了轻重链剖分的思想,先处理轻儿子的答案,然后消去轻儿子的影响,最后处理重儿子,并保留重儿子的

  • dsu on tree (树上启发式合并) 详解2020-11-25 04:00:30

    一直都没出过算法详解,昨天心血来潮想写一篇,于是 dsu on tree 它来了 1、前置技能 1.链式前向星(vector 建图) 2.dfs 建树 3.剖分轻重链,轻重儿子 重儿子 一个结点的所有儿子中拥有最多子树的儿子 轻儿子 一个结点的所有儿子中不是重儿子的儿子 重边 父亲与重儿子的连边

  • dsu on tre模板2020-11-22 17:01:56

    /* 询问每个节点子树上的颜色数 */ #include <bits/stdc++.h> using namespace std; const int maxn=1e5+5; struct edge{ int v,next; }E[maxn<<1]; int head[maxn],tot=0; void addedge(int u,int v){ E[++tot].v=v; E[tot].next=head[u]; head[u]=tot; } in

  • dsu on tree学习总结 (树上启发式合并)2020-11-05 08:01:28

    模板 :CF600E Lomsat gelral 题目大意:树的节点有颜色,一种颜色占领了一个子树,当且仅当没有其他颜色在这个子树中出现得比它多。求占领每个子树的所有颜色之和。 最近遇到了一道dsu on tree的题,所以去学了一下,写一下总结。 看到这道题,先考虑暴力: 搜索到每个点,暴力搜索一次这个点的子

  • 树上启发式合并(DSU on Tree)2020-10-30 10:31:27

    树上启发式合并 ( DSU on Tree) 是一种优雅的暴力 时间复杂度是 \(O(nlogn)\) 启发式就是基于直觉或经验的意思 树上启发式合并的代码很简单 void dfs(int u,int p,bool keep){ for(u.lightson v in u.son){ dfs(v,u,false); } if(have u.heavyson)dfs(u.heavyson,u,true);;

  • dsu on tree 学习笔记2020-10-07 07:31:47

    适用范围 支持离线处理 每个询问都是针对某棵子树 没有修改操作 原理 在递归遍历一整棵树并更新每棵子树产生的影响时,正常情况下我们每次递归完一棵子树都要将其撤销,否则会对其兄弟节点造成干扰。 而 \(dsu\) \(on\) \(tree\) 仅利用了一个性质,就是在 dfs 的过程中,最后遍历的

  • DSU on tree 树上启发式合并2020-09-14 22:03:00

    DSU on tree 树上启发式合并 自为风月马前卒dalao的博客 首先介绍一下大概流程: 首先处理所有轻链。 如果有重链,再处理重链。注意重链的值不删除。 这样只需要把轻链的贡献算一下加上就好了,不需要处理重链。 最后,如果是轻链,就要删除其对贡献的影响。 void dfs(int u, int pre, in

  • 牛客多校3-Operating on a Graph【dsu】2020-07-23 20:32:13

    题意:   给定n个点m条边的无向图,每个点一开始代表一种集合,共有n个集合   之后给出q次操作,每次询问将指定一个集合Oi,将所有与该集合有相连边的其他集合并入集合Oi   问经过q次操作后所有点属于哪个集合   做法:   之前没怎么遇见过启发式合并的题,所以赛时做法只是遍历所有点

  • LeetCode 947. 移除最多的同行或同列石头(并查集)2020-06-17 11:02:33

    1. 题目 我们将石头放置在二维平面中的一些整数坐标点上。每个坐标点上最多只能有一块石头。 每次 move 操作都会移除一块所在行或者列上有其他石头存在的石头。 请你设计一个算法,计算最多能执行多少次 move 操作? 示例 1: 输入:stones = [[0,0],[0,1],[1,0],[1,2],[2,1],[2,2]

  • dsu on tree2020-06-14 18:54:10

    https://www.luogu.com.cn/blog/codesonic/dsu-on-tree https://pzy.blog.luogu.org/dsu-on-tree-xue-xi-bi-ji  

  • P5344 【XR-1】逛森林[线段树优化建图]2020-05-02 17:52:07

    判下连通,离线下来连边,就是个裸的板子了QvQ。 我们把一堆边连到一个点,那个点连到一堆边,这样就可以满足 [l1,r1] -> to [l2,r2] 了 可以用 zkw 线段树来跑 spfa,奇怪的姿势增加了。 // by Isaunoya #include<bits/stdc++.h> using namespace std; struct io { char buf[1 << 25 | 3]

  • CF246E Blood Cousins Return [dsu on tree 树上启发式合并]2020-03-10 17:00:08

    #include <bits/stdc++.h> using namespace std; // int read() { // int x = 0; // char c = getchar(); // while (c < 48) c = getchar(); // while (c > 47) x = x * 10 + (c - 48), c = getchar(); // return x; //} int n, q; const int maxn = 2e5 +

  • dsu on tree详解2020-03-09 10:01:18

    这个算法还是挺人性化的,没有什么难度 就是可能看起来有点晕什么的。 大体 思想是 利用重链刨分来优化子树内部的查询。 考虑一个问题要对每个子树都要询问一次。我们暴力显然是\(n^2\)的。 考虑一下优化这个过程,我们发现儿子的信息可以给父亲用但是不能给兄弟或兄弟里的儿子用。

  • 并查集2020-02-29 18:39:07

    一、概念 并查集是一种树型的数据结构,用于处理一些不交集的合并及查询问题。 联合-查找算法定义了两个用于此数据结构的操作。 Find:确定元素属于哪一个子集,可以用来确定两个元素是否属于同一个子集。 Union:将两个子集合并成同一个集合 由于支持这两种操作,一个不相交集常

  • D. Cow and Snacks-(并查集dsu)2020-01-28 18:42:02

    总结 分堆问题 我们把有口味有关联的客人放在一堆,然后每一堆考虑最大满足数 特别的是,每个客人喜欢两种不同的口味,要保证最大满足数,你会发现,一堆口味中,第一个吃两种口味,后面的人都只吃一种口味了,达到最优。 每一堆有关系口味,其实就是构成多个连通分量。每个连通分量,第一个人

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有