這種題就屬於那種描述很簡單,要求很簡單,但就是無從下手的題
這個題我只有n根n做法、、列舉因數檢驗。。
首先對於任何塊的大小,方案唯一,這是顯然的,,如果劃分位置改變1,一定有乙個位置+1,乙個位置-1,不符題意
然後我們還需要發現乙個性質,如果能分成大小為n的塊,子樹節點數的數量是n的倍數的數量一定為總點數/n
證明其實也不難,關鍵是想不到、其實思考劃分問題我們可以只考慮特殊點,對於一些點的不確定可以轉化為只討論確定的點
因為點的sz統計是不重複的,所以如果出現了sz為n的倍數的點,則說明兩兩之間至少有n個點不同
而所有點都能被劃分,所以如果總點數/n==sz是n的倍數的節點個數,說明n/i*n個點都被分配到塊裡了,滿足題意
碼:#include#include#includeusing namespace std;
#define n 1000005
int i,sz[n],ans,a,b,tong[n],n,j;
vectorv[n];
void dfs(int o,int fa)
{int i;
sz[o]=1;
for(i=0;i
學習記錄 DFS的聯通塊與計數 剪枝
1 include 2 using namespace std 3const int maxn 1000 4 intn,m 5 地圖尺寸 6int maap maxn 10 maxn 10 7 查詢零一地圖中的1聯通塊個數 8bool vis maxn 10 maxn 10 9 int direx ...
BZOJ4401 塊的計數
description 小y最近從同學那裡聽說了乙個十分牛b的高階資料結構 塊狀樹。聽說這種資料結構能在sqrt n 的時間內維護樹上的各種資訊,十分的高效。當然,無聊的小y對這種事情毫無興趣,只是對把樹分塊這個操作感到十分好奇。他想,假如能把一棵樹分成幾塊,使得每個塊中的點數都相同該有多優美啊!小...
bzoj 4401 塊的計數
根據塊狀樹的那堆理論可以發現,對於某種塊大小,可行的分法只有一種 如果乙個點能被當成塊頂,僅當其子樹大小是塊大小的倍數 於是列舉塊的大小 i 當可行的塊頂個數大於等於 n i 時,就可以構造出可行的分法了 時間複雜度 o sum d include define n 2010000 using na...