ZJOI2007 時態同步

2021-07-24 23:57:48 字數 1091 閱讀 2287

題目描述

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

在電路板上存在乙個特殊的元件稱為「激發器」。當激發器工作後,產生乙個激勵電流,通過導線傳向每乙個它所連線的節點。而中間節點接收到激勵電流後,得到資訊,並將該激勵電流傳向與它連線並且尚未接收到激勵電流的節點。最終,激烈電流將到達一些「終止節點」――接收激勵電流之後不再**的節點。

激勵電流在導線上的傳播是需要花費時間的,對於每條邊e,激勵電流通過它需要的時間為te,而節點接收到激勵電流後的**可以認為是在瞬間完成的。現在這塊電路板要求每乙個「終止節點」同時得到激勵電路――即保持時態同步。由於當前的構造並不符合時態同步的要求,故需要通過改變連線線的構造。目前小q有乙個道具,使用一次該道具,可以使得激勵電流通過某條連線導線的時間增加乙個單位。請問小q最少使用多少次道具才可使得所有的「終止節點」時態同步?

【題目分析】

樹形dp,好題。

【**】

#include 

#include

#include

#include

using

namespace

std;

int h[500001],ne[1000001],to[1000001],w[1000001],en=0;

int f[500001],n,root,dp[500001];

void add(int a,int b,int c)

long

long ans=0;

void dfs(int k)

dp[k]=maxx;

for (int i=h[k];i>=0;i=ne[i])

if (f[k]!=to[i]) ans+=(dp[k]-dp[to[i]]-w[i]);

}int main()

dfs(root);

printf("%lld\n",ans);

}

ZJOI2007 時態同步

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

ZJOI2007 時態同步

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

ZJOI2007 時態同步

從根節點 激發器 開始搜 一直搜到葉子節點 然後回溯 回溯的過程中如果遇到有幾個葉子節點到這乙個節點 就用道具把不足的補足 同時記錄有多少個到達這個點的葉子結點 因為以後要更新的話要把以前到這個點的路徑不足的都要補足 include include include include define ma...