当前位置: 首页 > news >正文

重庆做网站 外包公司微信指数查询

重庆做网站 外包公司,微信指数查询,沈阳网站建设优化企业,运营推广怎么学目录 1 基础知识2 模板3 工程化 1 基础知识 并查集支持O(1)时间复杂度实现: 将两个集合合并。询问两个元素是否在一个集合中。 基本原理:每个集合用一颗树来表示。树根的编号就是整个集合的编号。每个结点存储它的父结点,p[x]表示x的父结点…

目录

  • 1 基础知识
  • 2 模板
  • 3 工程化

1 基础知识

并查集支持O(1)时间复杂度实现:

  1. 将两个集合合并。
  2. 询问两个元素是否在一个集合中。

基本原理:每个集合用一颗树来表示。树根的编号就是整个集合的编号。每个结点存储它的父结点,p[x]表示x的父结点。

问题1:如何判断树根:p[x] == x
问题2:如何求x的集合编号:while (p[x] != x) x = p[x];。上述为朴素做法,可以通过路径压缩,进行优化。

int find(int x) {if (p[x] != x) p[x] = find(p[x]);return p[x];
}

问题3:如何合并两个集合:px是x的集合编号,py是y的集合编号:p[px] = py

2 模板

(1)朴素并查集:int p[N]; //存储每个点的祖宗节点// 返回x的祖宗节点int find(int x){if (p[x] != x) p[x] = find(p[x]);return p[x];}// 初始化,假定节点编号是1~nfor (int i = 1; i <= n; i ++ ) p[i] = i;// 合并a和b所在的两个集合:p[find(a)] = find(b);(2)维护size的并查集:int p[N], size[N];//p[]存储每个点的祖宗节点, size[]只有祖宗节点的有意义,表示祖宗节点所在集合中的点的数量// 返回x的祖宗节点int find(int x){if (p[x] != x) p[x] = find(p[x]);return p[x];}// 初始化,假定节点编号是1~nfor (int i = 1; i <= n; i ++ ){p[i] = i;size[i] = 1;}// 合并a和b所在的两个集合:size[find(b)] += size[find(a)];p[find(a)] = find(b);(3)维护到祖宗节点距离的并查集:int p[N], d[N];//p[]存储每个点的祖宗节点, d[x]存储x到p[x]的距离// 返回x的祖宗节点int find(int x){if (p[x] != x){int u = find(p[x]);d[x] += d[p[x]];p[x] = u;}return p[x];}// 初始化,假定节点编号是1~nfor (int i = 1; i <= n; i ++ ){p[i] = i;d[i] = 0;}// 合并a和b所在的两个集合:p[find(a)] = find(b);d[find(a)] = distance; // 根据具体问题,初始化find(a)的偏移量

3 工程化

class UnionFind {
public:UnionFind(int n) {this->n = n;p.resize(n);cnt.resize(n);d.resize(n);for (int i = 0; i < n; ++i) {p[i] = i;cnt[i] = 1;d[i] = 0;}}int find(int x) {if (x != p[x]) {int u = find(p[x]);d[x] += d[p[x]];p[x] = u;}return p[x];}void merge(int x, int y) {int px = find(x), py = find(y);if (px != py) {p[px] = py;cnt[py] += cnt[px];		}return;}int size(int x) {//返回x所在集合的大小return cnt[find(x)];}
private:int n;vector<int> p; //存储父结点vector<int> cnt; //存储集合大小,根结点的cnt才有意义vector<int> d; //存储到根结点的距离
};
http://www.yayakq.cn/news/138403/

相关文章:

  • 中山做网站价格wordpress增加图片轮播
  • 营销型企业网站项目策划表外贸公司网站案例
  • 毕节网站网站建设网站如何防止被攻击
  • 网站备案信息被工信部删除58同城的网站建设
  • php做的网站建设亚马逊注册没有公司网站怎么做
  • 莱芜警方网站官网北京百度推广公司
  • 怎么做属于自己的音乐网站手机版网站模板
  • 企业网站招聘可以怎么做外贸网站建设定制开发
  • 可以做线路板网站的背景图有哪些网站可以做ppt
  • 邯郸手机网站开发价格快速做效果图的网站叫什么软件
  • 网站制作哪家专业贵州小程序制作开发
  • 中信建设 官方网站深圳购物商城网站设计
  • 制作一个网站的费用ps切片做网站
  • 怎样创建音乐网站全国网站设计排名
  • 做网站怎么开发程序信息化建设 网站建设等方面
  • 秦皇岛开发区建设局网站企业宣传网站模板下载
  • 个人网站意义建站模板与网站案例展示
  • 做网站主流网站p2f网站系统
  • A华企网络网站建设博物馆设计公司排名
  • 阿里云服务器618seo口碑优化
  • 照片展示网站模板免费下载notepad wordpress
  • 网站名称和备案公司名称不一样在虚拟主机上建设多个网站
  • 贵阳企业网站模板武威建设厅网站
  • 做的网站在不同浏览器做网站一般收取多少钱
  • 做pc端网站案例织梦收费
  • 公司做网站需要准备什么资料华为手机WordPress
  • 广州网站建设 企业如何做logo模板下载网站
  • 网站开发主题惠州建设工程造价管理站网站
  • 北京网站开发建设wordpress网站的根目录在哪里
  • 网站设计的特点nginx伪静态 wordpress