2017 9 26 塊的計數 思考記錄

2021-08-08 18:54:46 字數 582 閱讀 6603

這種題就屬於那種描述很簡單,要求很簡單,但就是無從下手的題

這個題我只有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...