洛谷1131 時態同步(被欺騙的假樹形dp)

2021-09-10 13:00:45 字數 819 閱讀 9496

樹形結構【電路板的各個節點由若干不相交的導線相連線,且對於電路板的任何兩個節點,都存在且僅存在一條通路(通路指連線兩個元件的導線序列)】

題中給出所有邊的花費,規定要使得從根點s到所有的終止節點的花費一致。

問,需要給所有邊增加多少花費?

資料範圍long long

dis[i]儲存 終止節點到i的最大花費。 //dfs從葉節點開始維護一下就行

dp[u]儲存 終止節點到u 需要增加的花費

(假)轉移方程:

已更新部分子樹的dp[u] + 當前子樹已更新部分dp[v] + uv之間需要增加的花費

uv之間增加花費,即:終止節點到u需要增加的花費dis[u] - 終止節點到當前子樹v需要增加的花費dis[v] - u到v的邊權值w

#include#include#includeusing namespace std;

typedef long long ll;

const int maxn=500005;

int n,s;

struct node

e[maxn<<1];

int head[maxn],num=0;

ll dis[maxn],dp[maxn];

void add(int u,int v,int w)

void dfs(int u,int fa)

}void tree_dp(int u,int fa)

}int main()

dfs(s,-1);

tree_dp(s,-1);

cout<}

洛谷P1131 時態同步

做這個題還是比較順手的,起碼做起來挺舒服的。他讓我們求使所有葉子節點到根節點距離一樣的代價,那麼作為一顆子樹來說首先就要滿足這點,因為再往上走的路徑都是一樣的,因此我們需要先求所有子樹的最大深度,然後答案 子樹最大深度 子樹蛾子子樹最大深度 子樹到其蛾子的距離 修改蛾子子樹的代價 include i...

ZJOI2007 時態同步(洛谷1131)

小q在電子工藝實習課上學習焊接電路板。一塊電路板由若干個元件組成,我們不妨稱之為節點,並將其用數字1,2,3 進行標號。電路板的各個節點由若干不相交的導線相連線,且對於電路板的任何兩個節點,都存在且僅存在一條通路 通路指連線兩個元件的導線序列 在電路板上存在乙個特殊的元件稱為 激發器 當激發器工作後...

洛谷P1131 ZJOI2007 時態同步

小qqq在電子工藝實習課上學習焊接電路板。一塊電路板由若干個元件組成,我們不妨稱之為節點,並將其用數字1,2,3 1,2,3 1,2,3 進行標號。電路板的各個節點由若干不相交的導線相連線,且對於電路板的任何兩個節點,都存在且僅存在一條通路 通路指連線兩個元件的導線序列 在電路板上存在乙個特殊的元件...