bzoj4401 塊的計數

2022-08-21 13:24:10 字數 564 閱讀 4402

首先,塊的大小確定的話,可以發現方案最多只有1種

然後就可以o(nsqrt(n))搞,不過會tle

接著我們又發現,乙個節點可以作乙個塊的根,當且僅當該節點的size能被塊的大小整除

然後就可以o(nlogn)搞了

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

#define n 1000010

struct edge

e[n<<1];

int head[n<<1];

int cnt;

int n;

int x,y;

int ans;

int f[n],p[n];

void link(int x,int y)

; head[x]=cnt;}

void dfs(int x,int d)

p[f[x]]++;}

int main()

printf("%d",ans);

return 0;

}

BZOJ4401 塊的計數

description 小y最近從同學那裡聽說了乙個十分牛b的高階資料結構 塊狀樹。聽說這種資料結構能在sqrt n 的時間內維護樹上的各種資訊,十分的高效。當然,無聊的小y對這種事情毫無興趣,只是對把樹分塊這個操作感到十分好奇。他想,假如能把一棵樹分成幾塊,使得每個塊中的點數都相同該有多優美啊!小...

bzoj 4401 塊的計數

根據塊狀樹的那堆理論可以發現,對於某種塊大小,可行的分法只有一種 如果乙個點能被當成塊頂,僅當其子樹大小是塊大小的倍數 於是列舉塊的大小 i 當可行的塊頂個數大於等於 n i 時,就可以構造出可行的分法了 時間複雜度 o sum d include define n 2010000 using na...

BZOJ4401 塊的計數

小y最近從同學那裡聽說了乙個十分牛b的高階資料結構 塊狀樹。聽說這種資料結構能在sqrt n 的時間內維護樹上的各種資訊,十分的高效。當然,無聊的小y對這種事情毫無興趣,只是對把樹分塊這個操作感到十分好奇。他想,假如能把一棵樹分成幾塊,使得每個塊中的點數都相同該有多優美啊!小y很想知道,能有幾種分割...