Kurskal重構樹練習2 Peaks 加強版

2021-08-28 14:50:51 字數 986 閱讀 7073

這道題還是挺裸的,不過意義在於我1a了。。。

意義很重大有沒有,100+行的**啊。

只經過邊權值小於等於balabala的邊肯定就是很裸的重構樹啦,然後求第k大的點權,在重構樹上就是一棵子樹,對於dfs序開主席樹就可以了。寫的時候理清楚思路,模組化程式設計啊,我習慣struct框起來,反正自己看著辦就行。

#include#include#include#include#include#include#includeusing namespace std;

#define pir pair#define ll long long

#define n 100100

#define ed 19

#define rg register

inline int read()

int cnt,n,m,q,top,first[n<<1],val[n<<1],yyb[n],len,rt[n<<1],ht[n<<1];

struct mona s[n*10];

inline void insert(int x,int y,int w) ,first[x]=top; }

struct mona s[n*10];

inline bool cmp(mona x,mona y)

inline int query(int l,int r,int x,int y,int k)

} t;

struct bz

inline int jump(int k,int hrd)

} b;

struct kru

inline void kruskal() b.dfs(cnt,0);

}} k;

int main();

sort(s+1,s+1+m,cmp),k.kruskal(); rg int lst_ans=0;

for(rg int i=1;i<=q;++i)

}

白書練習 二叉樹的重構

二叉樹的重構,給定乙個二叉樹的先序遍歷和中序便利,輸出後序遍歷結果,首先明確問題,我們需要建構乙個二叉樹,然而二叉樹的乙個很重要的特點就是二叉樹是遞迴定義的,所以我們往往遞迴的解決,那麼問題就是給一段先序遍歷和中序遍歷後,確定出二叉樹的三個重要元素即根節點和左子樹和右子樹,根據先序便利的特徵我們知道...

重構練習 大二作業 第2部分

現在開始修改資料結構。當初我在寫 的時候不知道抽了什麼風,過載了一大堆比較函式,還都是友元函式。friend bool operator bigamount ba1,bigamount ba2 friend bool operator long long ba1,bigamount ba2 frie...

codevs 1081 線段樹練習 2 線段樹

題目描述 description 給你n個數,有兩種操作 1 給區間 a,b 的所有數都增加x 2 詢問第i個數是什麼?輸入描述 input description 第一行乙個正整數n,接下來n行n個整數,再接下來乙個正整數q,表示操作的個數.接下來q行每行若干個整數。如果第乙個數是1,後接3個正整...