BZOJ1468 Tree 點分治入門練習題

2022-05-17 12:43:20 字數 822 閱讀 6970

點分治見bzoj2152

此題只是同時需要把點到根的距離存到陣列裡, 可以用sort排序然後再統計(arr陣列排序後只要arr[l]+arr[r]小於k,則arr[l]與arr中下標[l+1, r]任意乙個的和都滿足要求,直接統計)

#include#include#include#includeusing namespace std;

const int maxn = 100007, inf = ~0u >> 1;

int n, k, c, csiz, tot, size[maxn], dis[maxn], arr[maxn];

int cnt, head[maxn], next[maxn << 1], to[maxn << 1], len[maxn << 1];

void addedge(int u, int v, int l)

bool vis[maxn];

void dfs(int u, int last)

mxsz = max(mxsz, tot - size[u]);

if(csiz > mxsz) csiz = mxsz, c = u;

}void dist(int u, int last)

}int calc(int u, int l)

return ret;

}int ret;

void get_ans(int u)

}int main()

scanf("%d", &k);

get_ans(1);

printf("%d\n", ret);

return 0;

}

bzoj 1468 Tree 點分治模板

time limit 10 sec memory limit 64 mb submit 1527 solved 818 submit status discuss 給你一棵tree,以及這棵樹上邊的距離.問有多少對點它們兩者間的距離小於等於k n n 40000 接下來n 1行邊描述管道,按照題目中...

1468 Tree 樹的點分治

樓教主男人八題之一 好可怕 似乎不是很難的樣子。點分治大致是這樣 先選出乙個根 一般是重心 然後可以把兩個點之間的路徑分為經過根的和不經過根的,經過根的直接處理記錄,不經過根的遞迴處理計算。似乎還用到了容斥原理的方法。記錄經過當前根的方案數的方法是 先以當前的根為起點遍歷一遍記下di s 陣列即到根...

Tree(樹分治 點分治)

原題 poj 1741 題意 有一棵n個節點的樹,每條邊都有乙個權值,問有多少個節點之間的距離小於等於k,解析 典型的樹分治,對於每一棵樹,我們首先找到它的重心 重心 一棵樹中以這個點為root時的最大子樹的節點數最小 int siz n maxn n 這棵子樹大小,最大子樹大小 void getg...