首先,塊的大小確定的話,可以發現方案最多只有1種有了這個結論後就非常好做了,記錄一下當塊的大小為x時,可以做塊的根的數量,即滿足x|size[i]的i的數量,可以考慮nlogn的線性篩的做法by神犇wangyurzee7
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define r 998244353
using
namespace
std;
int sc()
int size[1000001],sum[1000001];
int head[1000001],nxt[2000001],lst[2000001];
int tot,n,ans;
void insert(int x,int y)
void dfs(int x,int f)
sum[size[x]]++;
}int main()
dfs(1,0);
for(int i=1;i<=n;i++)
cout
0;}
bzoj 4401 塊的個數(樹分塊)
一種特殊的分塊型別 樹分塊,與數列分塊有很大差別,基本都是將樹分成好幾個塊。對於此題,有兩個結論 1 一棵樹劃分成 k kk 份的方案是唯一的 但可以不存在 2 一棵樹可以劃分成 k kk 份,當且僅當有 k kk 個子節點的子樹大小是 n k frac kn 的倍數 所以只要 dfs dfsdf ...
BZOJ4401 塊的計數
description 小y最近從同學那裡聽說了乙個十分牛b的高階資料結構 塊狀樹。聽說這種資料結構能在sqrt n 的時間內維護樹上的各種資訊,十分的高效。當然,無聊的小y對這種事情毫無興趣,只是對把樹分塊這個操作感到十分好奇。他想,假如能把一棵樹分成幾塊,使得每個塊中的點數都相同該有多優美啊!小...
bzoj 4401 塊的計數
根據塊狀樹的那堆理論可以發現,對於某種塊大小,可行的分法只有一種 如果乙個點能被當成塊頂,僅當其子樹大小是塊大小的倍數 於是列舉塊的大小 i 當可行的塊頂個數大於等於 n i 時,就可以構造出可行的分法了 時間複雜度 o sum d include define n 2010000 using na...