日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

$bzoj1060-ZJOI2007$ 时态同步 贪心 树形$dp$

發(fā)布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 $bzoj1060-ZJOI2007$ 时态同步 贪心 树形$dp$ 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 題面描述

    • \(Q\)在電子工藝實習(xí)課上學(xué)習(xí)焊接電路板。一塊電路板由若干個元件組成,我們不妨稱之為節(jié)點,并將其用數(shù)字\(1,2,3….\)進行標(biāo)號。電路板的各個節(jié)點由若干不相交的導(dǎo)線相連接,且對于電路板的任何兩個節(jié)點,都存在且僅存在一條通路(通路指連接兩個元件的導(dǎo)線序列)。在電路板上存在一個特殊的元件稱為“激發(fā)器”。當(dāng)激發(fā)器工作后,產(chǎn)生一個激勵電流,通過導(dǎo)線傳向每一個它所連接的節(jié)點。而中間節(jié)點接收到激勵電流后,得到信息,并將該激勵電流傳向與它連接并且尚未接收到激勵電流的節(jié)點。最終,激烈電流將到達一些“終止節(jié)點”——接收激勵電流之后不再轉(zhuǎn)發(fā)的節(jié)點。激勵電流在導(dǎo)線上的傳播是需要花費時間的,對于每條邊\(e\),激勵電流通過它需要的時間為\(t_e\),而節(jié)點接收到激勵電流后的轉(zhuǎn)發(fā)可以認(rèn)為是在瞬間完成的。現(xiàn)在這塊電路板要求每一個“終止節(jié)點”同時得到激勵電路——即保持時態(tài)同步。由于當(dāng)前的構(gòu)造并不符合時態(tài)同步的要求,故需要通過改變連接線的構(gòu)造。目前小\(Q\)有一個道具,使用一次該道具,可以使得激勵電流通過某條連接導(dǎo)線的時間增加一個單位。請問小\(Q\)最少使用多少次道具才可使得所有的“終止節(jié)點”時態(tài)同步?
  • 輸入格式

    • 第一行包含一個正整數(shù)\(N\),表示電路板中節(jié)點的個數(shù)。
    • 第二行包含一個整數(shù)\(S\),為該電路板的激發(fā)器的編號。
    • 接下來\(N-1\)行,每行三個整數(shù)\(a , b , t\)。表示該條導(dǎo)線連接節(jié)點\(a\)與節(jié)點\(b\),且激勵電流通過這條導(dǎo)線需要\(t\)個單位時間
  • 輸出格式

    • 僅包含一個整數(shù)\(V\),為小\(Q\)最少使用的道具次數(shù)。
  • 題解

    • 第一次看這題時看錯題,看成了\(APIO2016煙火表演\),然后就列出了\(f_{u,t}=\sum_{vsm_u}min_{t'\leq t}(f_{v,t'}+t-t')\)
    • 然后再看題才發(fā)現(xiàn)只能增加邊權(quán),不能減少邊權(quán),再看一眼剛列出的式子\(f_{u,t}=\sum_{vsm_u}min_{t'\leq t}(f_{v,t'}+t-t')\\\Rightarrow f_{u,t}=\sum_{vsm_u}mn_{v,t}+t\ (mn_{v,t}=min_{t'\leq t}f_{v,t'}-t')\)
    • 設(shè)\(f_v\)單調(diào)不減,\(mn_{v,t}\)固定,\(f_u\)隨 t 增長而變大,而對于葉子,\(f_{leaf,t}\)單增。
    • 由數(shù)學(xué)歸納法可知,\(f_u?\)單調(diào)增。
    • 因此這個dp方程存在理論下界,即剛好滿足條件\((t_u=max\ t_v+w_{v\to u})\)時最小。
    • 因此此題我們可以貪心,記錄\(t_u?\)表示想要讓葉子都同態(tài)至少多少時間,\(f_u?\)表示使葉子同步到\(t_u?\)這個時間最少花費。
    • 遞推即可。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; const int MAXN=5e5+5; const int MAXM=1e6+6; int n,S; int edge,head[MAXN],tail[MAXM],nex[MAXM],w[MAXM]; ll f[MAXN],g[MAXN]; void add(int u,int v,int W){edge++,nex[edge]=head[u],head[u]=edge,tail[edge]=v,w[edge]=W; } void dfs(int u,int p){for (int e=head[u];e;e=nex[e]){int v=tail[e];if (v==p) continue;dfs(v,u);g[u]=max(g[u],g[v]+w[e]);}for (int e=head[u];e;e=nex[e]){int v=tail[e];if (v==p) continue;f[u]+=f[v]+g[u]-(g[v]+w[e]);} } int main(){scanf("%d%d",&n,&S);for (int i=1;i<n;i++){int u,v,w; scanf("%d%d%d",&u,&v,&w);add(u,v,w); add(v,u,w);}dfs(S,0);printf("%lld\n",f[S]);return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/shjrd-dlb/p/10803861.html

總結(jié)

以上是生活随笔為你收集整理的$bzoj1060-ZJOI2007$ 时态同步 贪心 树形$dp$的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。