BZOJ1907 樹的路徑覆蓋 樹形DP

2021-07-22 12:06:59 字數 767 閱讀 4534

time limit: 5 sec  

memory limit: 259 mb

submit: 661  

solved: 299

[submit][status][discuss]

1 22 3

2 44 6

5 66 7

3對於每個節點x:

f[x][0]表示沒有選擇x點與父節點相連的路徑時,其子樹的最小路徑覆蓋數;

f[x][1]表示選擇了x點與父節點相連的路徑時,其子樹最小路徑覆蓋數;

每個塊的形態只有兩種:「倒v」,或呈鏈狀。

對於「倒v」:我們只需要計算在該點的f[x][0],為子樹中的塊數之和-1;

#include#include#include#include#include#define clear(a) memset(a,0,sizeof(a))

using namespace std;

const int m=40005;

const int n=10005;

int t,n,x,y;

int to[m],nxt[m],lj[n],cnt;

void add(int f,int t)

int s[n],fa[n],f[n][2];

void dfs(int x)

}int main()

dfs(1);

printf("%d\n",min(f[1][0],f[1][1]));

}}

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 ...

BZOJ 1907 樹的路徑覆蓋

題目描述 輸入 輸出樣例輸入 1 71 2 2 32 4 4 65 6 6 7 樣例輸出 3 題解 比較裸的樹形dp。對於任意節點x,只有三種情況,x單獨成鏈,x與子樹中的其中一條鏈成一條鏈,x與子樹中的兩條鏈成一條鏈。include include include define n 10010 d...

BZOJ1907 樹的路徑覆蓋(貪心)

我是超連結 看上去像網路瘤題?嗯很明顯想多了,這可是一棵樹啊 然後陷入一臉不可做的狀態。翻翻翻 以某乙個點為根的子樹,這個點只有兩種狀態 拐彎 兩條簡單路徑在乙個點交匯成一條,折折折 和直上 一條路走到黑 我們優先滿足拐彎的情況,貪心!貪心策略是 只要當前點能成為拐點,就讓它成為拐點。也就是說,貪心...