演算法模板 並合集

2021-10-21 06:14:11 字數 793 閱讀 6047

題目描述

一共有n個數,編號是1~n,最開始每個數各自在乙個集合中。

現在要進行m個操作,操作共有兩種:

「m a b」,將編號為a和b的兩個數所在的集合合併,如果兩個數已經在同乙個集合中,則忽略這個操作;

「q a b」,詢問編號為a和b的兩個數是否在同乙個集合中;

#include

using

namespace std;

const

int n =

1e6+10;

int p[n]

;```cpp

intfind

(int x)

int main(void)

else if(op[0] == 'q')

}}`並合集

一種快速對字串以及二進位制陣列元素的管理方式,用樹的形式進行儲存;

**分析

對於1~n這些數字,我們建立了乙個陣列p來記錄他的祖先節點,運用下標與實際數字進行關聯,例如p[i]記錄的就是i的祖先節點,在程式一開始的時候,我們將每個節點的祖先設定為他自己,然後通過合併陣列的操作實現樹的建立;

集合的合併

樹的根節點儲存集合的資訊,p陣列的單元儲存節點的祖先,將根節點的祖先修改為另乙個集合就完成了就和的合併;

int

find

(int x)

這乙個操作就完成了尋找x的祖先根節點

ACM模板合集

第一年小白拿銅牌,第二年隊友出走,加上疫情原因不能回校訓練導致心底防線徹底崩盤,於是選擇退役。自從退役之後,一直想我打了那麼久的acm,什麼也沒留下覺得很難受,突然想到我打acm的時候,模板的程度參差不一,有的時候錯誤的模板真的會影響結果,所以我想整理完我的和我的隊友的模板留給未來的小夥伴們,希望你...

排序演算法合集

每次排序將排序範圍內最小的值調換位置到最前面.雙指標的應用 include include using namespace std void bubblesort vector s int main bubblesort s for int i 0 i int s.size i cout 優化 當待...

Python演算法合集

自海燕部落格 目錄001 十大演算法001 002 十大演算法002 003 演算法基礎 004 列表查詢以及二分查詢 005 樹和二叉樹簡介 006 演算法之 堆的簡單介紹 007 資料結構相關知識 008 演算法之迷宮問題 009 貪心演算法找零問題 010 演算法之斐波那契數列 011 演算法...