BZOJ4855 Jsoi2016 輕重路徑

2021-09-07 10:55:10 字數 811 閱讀 1375

首先用樹狀陣列維護dfs序來快速支援乙個點子樹大小的詢問。

每次刪掉乙個葉子時,從根開始往葉子走,顯然只有$2size[x]\leq size[father]$的點的父親才有可能換重兒子。

從根開始往下,找到最高的滿足條件的點,從那個點開始繼續迭代,每次點數至少減小一半,所以迭代只有$o(\log n)$次。

時間複雜度$o(n\log^2n)$。

#includeconst int n=200010;

int n,m,x,i,ch[n][2],size[n],f[n],d[n],son[n],top[n],st[n],en[n],q[n],dfn,bit[n];long long ans;

inline void read(int&a)

inline void add(int x,int p)

inline int ask(int x)

inline int getsize(int x)

void dfs(int x)

ans+=son[x];

}void dfs2(int x,int y)

en[x]=dfn;

}inline int up(int x,int k)

}inline void recal(int x)

if(!t)son[x]=0;

else if(getsize(son[x])!=t)

ans+=son[x];

}inline void remove(int x)

}int main()

return 0;

}

小店購物 JSOI2008 BZOJ 2260

grant是乙個個體戶老闆,他經營的小店因為其豐富的優惠方案深受附近居民的青睞,生意紅火。小店的優惠方案十分簡單有趣。grant規定 在一次消費過程中,如果您在本店購買了精製油的話,您購買香皂時就可以享受2.00元 塊的 如果您在本店購買了香皂的話,您購買可樂時就可以享受1.50元 聽的 諸如此類的...

BZOJ 4327 JSOI2012 玄武密碼

字尾自動機裸題。藉著這道裸題總結一下字尾自動機的查詢問題。1.查字首 查詢時不跳parent,遇到空節點就跳出。2.查子串 查詢時跳parent,記錄最大ans.3.查次數 lct維護right陣列 4.查不同的串的數目 在建樹時維護,乙個點對答案的貢獻為this max len this pare...

JSOI2009 bzoj1449 球隊收益

description input output 乙個整數表示聯盟裡所有球隊收益之和的最小值。首先假設全輸,然後給每場比賽分配乙個贏家,每個隊伍每多贏一場多獲得的收益作為費用。但是有乙個問題,如何保證每次走的是對應的邊?也就是,如何保證贏第一場的時候增加的收益是贏一場減贏零場,而不是贏兩場減贏一場?...