BZOJ1827 奶牛大集會

2022-04-30 20:48:10 字數 960 閱讀 8822

題意:找乙個點x使得$\sum c_i\cdot dis(i,x)$最小(其中dis表示i->x的距離)

做法:先跑出乙個點的答案,然後在樹上跳動,x->son的時候son這棵子樹的答案都減去$\sum c_i*dis(x,son),i\in son$,其他節點都增加$\sum c_i*dis(x,son)$

#includeusing

namespace

std;

#define ll long longinline ll read()

inline

void chkmin( int &a,int b )

inline

void chkmax( int &a,int b )

#define _ read()

#define ln endl

const

int n=1e5+5

;int

cnt,head[n];

struct edge e[n<<1

];inline

void insert( int u,int v,int

w ) ;

head[u]=cnt;

}inline

void ins( int u,int v,int

w )

ll sum[n],ans,tot,res;

inta[n],n;

inline

void dfs_1( int x,int

fa )

}}inline

void dfs_2( int x,int

fa )

}}int

main()

dfs_1(

1,0); res=ans;

//cout/

cout

); cout

}

「bzoj1827」奶牛大集會

BZOJ1827 奶牛大集會(樹形遞推)

description bessie正在計畫一年一度的奶牛大集會,來自全國各地的奶牛將來參加這一次集會。當然,她會選擇最方便的地點來舉辦這次集會。每個奶牛居住在 n 1 n 100,000 個農場中的乙個,這些農場由n 1條道路連線,並且從任意乙個農場都能夠到達另外乙個農場。道路i連線農場a i和b...

0717 樹形dp 容斥原理 BZOJ1827

由於是許可權題,我就不好把題目發上來了 萬一bzoj打我怎麼辦 題目大意如下即可 題解 30 資料,暴力計算 列舉每個點作為集合點,然後計算。兩點距離可以用 lca 來計算 對於100 資料 考慮 樹形dp 容斥原理 換根 定義f i 表示i為關鍵點答案 dis i 表示以i為根子樹和,第一遍樹形d...

BZOJ1641Cow Hurdles 奶牛跨欄

1641 usaco2007 nov cow hurdles 奶牛跨欄 time limit 5 sec memory limit 64 mb submit 511 solved 336 description farmer john 想讓她的奶牛準備郡級跳躍比賽,貝茜和她的夥伴們正在練習跨欄。她們...