dlz常數史稱杜林哲常數,用來優化樹中最值以及列舉邊的問題
dlz常數的計算方法是看樹的規模,再進行一系列的運算可以得到
在這道題裡面dlz常數可以控制在11~20之間,就可以剪枝了
做法:列舉每一條邊,找兩邊子樹的帶權重心,此時必定最優,然後計算出相應的值然後進行比較
dlz剪枝定律:當兩邊子樹的比值為乙個dlz常數範圍的時候,剪枝必定成立並且可以優化時間複雜度
這個定律在bashu聯考的時候被dlz提出
複雜度o(n^2/dlz)
code:
1 #include2 #include3over#define n 100005
4using
namespace
std;
5struct
nodee[n];
8int
first[n],nxt[n],cnt;
9void add(int u,int
v)15
intsiz[n],root,a[n],mxsiz,mark;
16int getroot(int x,int
father)
26 max0=max(max0,mxsiz-siz[x]);
27if(max0
32int
temp,dis[n],end;
33void getdis(int x,int
father)42}
43int s[n],suma,ans=0x3f3f3f3f;44
void cal(int x,int
y)58
void work(int x,int
father)68}
69int
main()
78for(int i=1;i<=n;i++)
82 work(1,0
);83 cout<
84return0;
85 }
T139631 T3 階乘之和
給定乙個非負整數 n,請你判斷 n 是否可以由一些非負整數的階乘相加得到。有若干組資料。每行乙個整數 n,保證 n 1000000。以負數結束輸入。對於每組資料輸出一行,若可以則輸出 yes 否則輸出 no 輸入 1複製 9 1 輸出 1複製 yes7 20 校內測模擬t3 差點就離 l 開 k i...
考試程式 DAY3 T3
題目大意 給出求每個區間的異或和的花費cost i j 求知道每乙個元素的最小花費 分析 考試的時候想成了線性基 明明考圖論了 結果就gg了.正解是mst,把每個詢問當做邊,字首和 似乎可以這麼說 當做點,做mst include include include include include in...
T3進銷存公升級T 備忘
t3進銷存資料公升級t 只能公升級各種基礎檔案和截至某月底的結存數量 不含單價 金額 一 安裝及加密識別 1.1 因為不能公升級歷史業務單據,所以如果要查詢t3的歷史資料,需要在訂購t 時同時訂購t3查詢工具。1.2 t3和t 需要安裝在一台電腦,t3主要查詢,不再做新資料,所以想用高版本sql,也...