ZJOI2007 時態同步

2022-05-05 18:36:11 字數 1118 閱讀 3350

傳送門

聽說這是一道樹形dp,不過我不知道怎麼dp,我只想出來了dfs的做法。

原題可以轉化成一棵樹,從給定的根節點到所有的葉節點,問要把這些路徑的長度設成同乙個值最少要更改多少次。

我們考慮之後發現,肯定是在深度比較低的邊上做修改,使得最後的修改次數比較少,不過如何確定要修改多少次呢?我們可以先遞迴到葉節點,之後回溯的時候對於每乙個節點, 我們可以統計這個節點的所有子樹中路徑最長的有多長,其他的子樹只要加上差值就可以了。

這題當時想到了做法……不過做反了,從底層回溯的時候能更好的統計答案。注意在統計答案的時候不能訪問到自己的父節點……所以要更改一下vis陣列來記錄情況。

#include#include

#include

#include

#include

#include

#include

#define rep(i,a,n) for(int i = a;i <= n;i++)

#define per(i,n,a) for(int i = n;i >= a;i--)

#define enter putchar('\n')

using

namespace

std;

typedef

long

long

ll;const

int m = 500005

;const

int n = 10005

;ll read()

while(ch >= '

0' && ch <= '9'

)

return ans *op;

}struct

edge

e[m<<1

];ll n,s,ans,a,b,t,dis[m],head[m],ecnt;

bool

vis[m];

void add(int x,int y,int

z)int dfs(int

x) }

for(int i = head[x];i;i =e[i].next)

return

maxn;

}int

main()

ZJOI2007 時態同步

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

ZJOI2007 時態同步

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

ZJOI2007 時態同步

傳送門 這道題目有點水啊,只要深搜到葉子節點,然後回溯,找出乙個點到它的兒子節點的最大距離,ans ans ans 最大距離 到每個兒子節點距離,最後記得把它父親節點到它的距離加上之前所求的最大距離。include define il inline define ll long long defin...