暴力n^2 各種tle
#include
#include
const int maxn=100010;
struct node;};
node * list[maxn];
int min_num[maxn],deg[maxn],n,son[maxn];
int n2;
bool vis [maxn];
void dfs (int u)
if(uvoid init ()
int main ()
son[0]=0;
p--;
vis[p]=true ;
node * tp=list[p];
min_num[p]=p;
for (; tp!=null ; tp=tp->next)
for (int i=0 ; i正解演算法 用樹狀陣列
題 目 大 意 是 給 定 一 棵 樹 ,對 於 每 個 節 點 ,計 算 其 所 有 子 節 點 中 編 號 小 於 該 節 點 編 號 的 個
數 。 記 所 求 為 f[i], 根 據 樹 的 遞 歸 性 質 我 們 可 以 想 到 對 其 進 行 遞 歸 統 計 。 我 們 可 以 使 用 一 個
樹 狀 數 組 記 錄 當 前 加 入 的 節 點 。 每 當 遍 歷 到 一 個 節 點 時 ( 注 意 是 後 序 ), 便 將 該 節 點 加 入 ,
那 麼 當 我 們 遍 歷 完 以 v 為 根 的 所 有 子 樹 時 , 便 可 以 根 據 加 入 的 節 點 計 算 出 f[v ]。
這 裡 有 一 個 小 問 題 :假 設 u ,v 為 兄 弟 節 點 ,我 們 首 先 遍 歷 了 以 u 為 根 的 子 樹 ,當 我 們
遍 歷 以 v 為 根 的 子 樹 時 ,u 子 樹 的 所 有 節 點 已 經 加 入 了 ,然 而 它 們 並 不 屬 於 v 中 任 意 節 點 的
子 節 點 。 但 注 意 到 v 的 所 有 子 節 點 都 是 在 遍 歷 到 v 子 樹 之 後 才 加 入 的 , 所 以 我 們 可 以 在 遍
歷 v 節 點 的 子 節 點 之 前 記 錄 當 前 編 號 小 於 v 的 節 點 總 數 c 1 , 在 遍 歷 完 所 有 子 樹 之 後 計 算 編
號 小 於 v 的 節 點 總 數 c 2, 則 有 f[v ]= c 2-c 1 。
dfs序 樹狀陣列
the first line contains an integer n n 100,000 which is the number of the forks in the tree.output for every inquiry,output the correspond answer per ...
牛客網多校5 I vcd (樹狀陣列)
題目 有 n 個點,乙個點集 s 是好的,當且僅當對於他的每個子集 t,存在乙個右邊無限長的矩形,使得這個矩形包含了 t,但是和 s t 沒有交求這 n 個點裡有幾個好的點集 1 n 10 5 思路 對於 s 1,他顯然是好的 對於 s 2,只要兩個點的 y 座標不相同,那麼這個集合也是好的 對於 ...
牛客網多校5 H subseq (樹狀陣列)
題目 給定乙個序列 a 1.n 求下標字典序第 k 小的嚴格遞增子串行 1 n 10 5 0 k 10 18 思路 考慮逐位確定,每次大概要算 a i n 中,第一項 x 的嚴格遞增子串行的個數,這個可以用乙個可持久化線段樹或者樹狀陣列維護。include using namespace std t...