題目描述 輸入
輸出樣例輸入 1
71 2
2 32 4
4 65 6
6 7
樣例輸出 3
題解:比較裸的樹形dp。對於任意節點x,只有三種情況,x單獨成鏈,x與子樹中的其中一條鏈成一條鏈,x與子樹中的兩條鏈成一條鏈。
#include #include #include #define n 10010
#define inf 0x3f3f3f3f
using namespace std;
int head[n] , to[n << 1] , next[n << 1] , cnt , fa[n] , son[n] , f[n] , g[n];
void add(int x , int y)
void init(int x)
void dfs(int x)
f[x] = sum + min(t , 1);//對於1的情況是x單獨成鏈;
if(son[x] < 2) return;
int m1 = inf , m2 = inf;
for(i = head[x] ; i ; i = next[i])//尋找x與其中兩條鏈成一條鏈的情況
}g[x] = sum + m1 + m2 - 1;
}int main()
return 0;
}
BZOJ1907 樹的路徑覆蓋
bzoj1907 其實挺sb 的乙個樹形dp 我這種sb 都會的樹形dp 我的做法很鬼畜。fx 0,f x,1 分別表示點 x 作為轉折點 也就是連成乙個 v字形 非轉折點,覆蓋該子樹的最小路徑數。記v 為x的兒子節點,su m m in f v,0,fv,1 mn mn 為fv 0 m in f ...
BZOJ1907 樹的路徑覆蓋(貪心)
我是超連結 看上去像網路瘤題?嗯很明顯想多了,這可是一棵樹啊 然後陷入一臉不可做的狀態。翻翻翻 以某乙個點為根的子樹,這個點只有兩種狀態 拐彎 兩條簡單路徑在乙個點交匯成一條,折折折 和直上 一條路走到黑 我們優先滿足拐彎的情況,貪心!貪心策略是 只要當前點能成為拐點,就讓它成為拐點。也就是說,貪心...
BZOJ 1907 樹的路徑覆蓋 樹形DP
題目大意 給定一棵樹,求最小路徑覆蓋 資料範圍1w,看到還想跑網路流來著 不過算了明明樹形dp這麼水還是不要用網路流這種大殺器為好 首先將所有的鏈都考慮成以鏈上所有點的lca為轉折點的v字形 那麼點有兩種 轉折點和非轉折點 因此我們選擇兩種狀態進行轉移 還會和父親組成鏈的狀態和成為轉折點的狀態 轉移...