將一棵樹劃分為若干塊,每個塊未必連通,但並上這個塊的中心後連通,中心可以不是塊內的點,每個塊的大小 \(\in [b,3b]\)
經典的王室聯邦分塊法
dfs 整棵樹,對於每個子樹,將其中能分塊的結點分塊,不能分塊的結點以集合的形式上傳,和上一層一起分塊
最後多餘下來的一些點併入最後乙個塊中
#include using namespace std;
#define int long long
const int n = 1000005;
int n,b,c[n],x[n],vis[n],ind,t1,t2;
vector g[n];
setdfs(int p)
}res.insert(p);
return res;
}signed main()
setres = dfs(1);
if(ind==0) ++ind;
for(int t:res) c[t]=ind;
cout
SCOI 2005 王室聯邦 樹上分塊?
在wzh大神 ps 我是渣渣wzh 的部落格看見的乙個分塊題目,剛好要複習分塊,於是我就研究了一下樹上分塊,恩,這個題目的要求和樹上分塊差不多。沒什麼就是原來的size變成題目規定的b了,然後這就變成了分塊的模板題目。bzoj 大神wzh的部落格orzwzh description 餘 人國的國王想...
SCOI2005 王室聯邦
這一篇類似是強聯通的東東大家參考一下吧,我也不會講這題。大家可以傳送去我同學那裡看看的qaq傳送門 提交傳送門 題目描述 餘 人國的國王想重新編制他的國家。他想把他的國家劃分成若干個省,每個省都由他們王室聯邦的乙個成員來管理。他的國家有n個城市,編號為1.n。一些城市之間有道路相連,任意兩個不同的城...
SCOI2005 王室聯邦
餘 人國的國王想重新編制他的國家。他想把他的國家劃分成若干個省,每個省都由他們王室聯邦的乙個成員來管理。他的國家有n個城市,編號為1.n。一些城市之間有道路相連,任意兩個不同的城市之間有且僅有一條直接或間接的道路。為了防止管理太過分散,每個省至少要有b個城市,為了能有效的管理,每個省最多只有3b個城...