bzoj1907 樹的路徑覆蓋(樹形DP)

2022-05-12 15:51:13 字數 1248 閱讀 5250

一眼題...

f[i][0]表示在i連線乙個子樹的最小值,f[i][1]表示在i連線兩個子樹的最小值,隨便轉移...

樣例挺強的1a了美滋滋...

upd:學習了2314的寫法之後短了好多t t

#include#include

#include

#include

#include

using

namespace

std;

const

int maxn=500010, inf=1e9;

struct poie[maxn];

intn, t, tot, x, y;

int f[maxn][2

], last[maxn];

void read(int &k)

inline

void add(int x, int y); last[x]=tot;}

inline

int min(int a, int b)

void dfs(int x, int

fa)

}int

main()

}

view code

舊**:

#include#include

#include

#include

#include

using

namespace

std;

const

int maxn=500010, inf=1e9;

struct poie[maxn];

intn, t, tot, x, y;

int f[maxn][2

], last[maxn];

void read(int &k)

inline

void add(int x, int y); last[x]=tot;}

inline

int min(int a, int b)

void dfs(int x, int

fa)

f[x][

0]+=tmp;

if(!(f[x][0]-tmp))

if(mn2==inf)

for(int i=last[x], too;i;i=e[i].pre)

if((too=e[i].too)!=fa)

}int

main()

}

view code

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 樹的路徑覆蓋(貪心)

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