顯然資源集合處就是樹的重心,這題需要動態維護樹的重心。
每個連通塊以重心為根,用link-cut tree維護每個點的子樹大小以及子樹內所有點到它的距離和。
合併兩個連通塊時,考慮啟發式合併,暴力往大的樹中新增葉子。
新增葉子時,需要將葉子到重心路徑上所有點的子樹大小+1,距離和則加上乙個等差數列。
並且新的重心是可能是原來的重心或者原來重心到葉子路徑上的第乙個點,暴力即可。
時間複雜度$o(n\log^2n)$。
#include#define n 40010
int n,m,i,x,y,ans;char op[5];
int g[n],v[n<<1],nxt[n<<1],ed,f[n],son[n][2],val[n],tag[n],sum[n],ts[n],td[n],size[n],tmp[n];
inline void swap(int&a,int&b)
inline bool isroot(int x)
inline void add1(int x,int p)
inline void add2(int x,int s,int d)
inline void pb(int x)
if(td[x])
}inline void up(int x)
inline void rotate(int x)
f[x]=f[y];f[y]=x;son[x][w^1]=y;up(y);
}inline void splay(int x)
rotate(x);
} up(x);
}inline void access(int x)
inline int root(int x)
inline void addleaf(int x,int y)
}void dfs(int x,int y)
inline void addedge(int x,int y)
inline void link(int x,int y)
int main()
return 0;
}
BZOJ 物流運輸
乙個神奇的dp,為數不多自己搞出來的dp。其實可以發現對於這個題,單純的最短路亂搞是錯誤的 那麼,dp 我們可以用cost i j 表示從第i天到第j天的不換路花費,當然算的時候保證這條路在i到j天都可以走,那麼是一定存在每個時間段不存在一條從起點到終點的道路的,那麼這個時候要判斷一下賦值成 oo ...
bzoj1003物流運輸
物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉 停好幾個碼頭。物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟蹤。由於各種 因素的存在,有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨物能夠按時到達目的地。但...
Bzoj4326 運輸計畫
time limit 30 sec memory limit 128 mb submit 1091 solved 696 submit status discuss 公元 2044 年,人類進入了宇宙紀元。l 國有 n 個星球,還有 n 1 條雙向航道,每條航道建立在兩個星球之間,這 n 1 條航道...