樹形dp
有一棵樹,有 n 個節點, n-1 條邊,每條邊都有乙個權值。
要求每個葉子結點到根節點的邊權相同,求最少的改動數量(不是次數)
看不懂的話,走傳送門
很顯然是 dp (我也不知道是怎麼想到的)
我們可以想一想,如果從根節點出發,向下維護會有諸多不便。
所以我們可以倒著思考,從每乙個葉子結點開始進行維護,這就很方便了。
現在我們來考慮如何維護:
然後就沒了。
#include#include#include#include#include#include#define maxn 500500
using namespace std;
int n,s,maxd[maxn],cnt=0,head[maxn];
long long ans=0;
struct nodeedge[maxn];
void addedge(int x,int y,int v)
void dfs(int x,int fa)
for(int i=head[x];i;i=edge[i].next)
for(int i=head[fa];i;i=edge[i].next)
return;
}int main(){
scanf("%d %d",&n,&s);
int a,b,c;
for(int i=1;i其實這道題接近模擬,但也有 dp 思想。
P1131 ZJOI2007 時態同步
小q在電子工藝實習課上學習焊接電路板。一塊電路板由若干個元件組成,我們不妨稱之為節點,並將其用數字1,2,3 進行標號。電路板的各個節點由若干不相交的導線相連線,且對於電路板的任何兩個節點,都存在且僅存在一條通路 通路指連線兩個元件的導線序列 在電路板上存在乙個特殊的元件稱為 激發器 當激發器工作後...
P1131 ZJOI2007 時態同步
小 q在電子工藝實習課上學習焊接電路板。一塊電路板由若干個元件組成,我們不妨稱之為節點,並將其用數字 1,2,3 進行標號。電路板的各個節點由若干不相交的導線相連線,且對於電路板的任何兩個節點,都存在且僅存在一條通路 通路指連線兩個元件的導線序列 在電路板上存在乙個特殊的元件稱為 激發器 當激發器工...
P1131 ZJOI2007 時態同步
include define maxn 1000005 using namespace std struct edge edge maxn int n,s,a,b,t,maxn maxn cnt,head maxn maxn儲存到子節點的最大邊權 long long ans 注意,答案要用long ...