這道題還是挺裸的,不過意義在於我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個正整...