(多校)超級加倍

2022-09-19 03:42:15 字數 1261 閱讀 7291

第一次考場見重構樹

我們按點從小到大依次插入

不太好描述,先上碼:

for(re int i=2;i<=n;i++) 

}}

那乙個點到他重構樹的子樹內的點的路徑最小值一定為該點

則若 \((i,j)\) 滿足條件,那麼在兩棵重構樹內兩點肯定互為祖先

此題完結

code

#include #define re register

// #define int long long

#define ll long long

#define pir make_pair

#define fr first

#define sc second

#define db double

#define pb push_back

using namespace std;

const int mol=998244353;

const int maxn=2e6+10;

const int inf=1e9+10;

inline int qpow(int a,int b) return ans; }

inline int read()

while(ch>='0'&&ch<='9')

return s*w;

}int n,tot,fa[maxn],dfn[maxn],size[maxn]; ll ans;

struct edge edge[maxn<<1];

int head[maxn],cnt;

inline void add(int a,int b) ; head[a]=cnt; }

inline int find(int a)

namespace stg }

inline ll quy(int pos) return ans; }

}vectorvec[maxn];

inline void clear()

inline void dfs1(int now)

}inline void dfs2(int now)

stg::ins(dfn[now],-1);

}signed main(void)

clear();

for(re int i=2;i<=n;i++) }}

dfs2(1);

printf("%lld\n",ans);

}

多校4 櫥櫃

include include include include includeusing namespace std int s1 400100 int s2 400100 struct node struct cmp int main int i,j,m,n while scanf d d n,m...

多校聯賽總結

首先是一些資料 2014 multi university training contest 1 by fzu a 數學 費馬小定理 b 網路流 最小k路徑覆蓋 c 樹形dp 樹的重心 資料結構 d 貪心 巧妙 e 數學 dp 隱含馬爾科夫模型 f 線段樹 函式式 二分 g 線段樹 狀態壓縮 h 模...

多校聯賽 Envy

我們讓 n 個人站成一排,編號為 1 n,每個人都有乙個數字代表他這次比賽的成績,對於每個人,如果他後面 編號大於他的人中 存在乙個人的成績大於等於他,那麼他的嫉妒值為他們之間的距離。兩個點 a和 b 之間的距離為 abs a b 例如 4,3,6,2 那麼第 1 個人對第 3 個人有 2 點嫉妒值...