51 Nod 1500 蘋果曼和樹(樹形dp)

2022-06-20 21:24:07 字數 1227 閱讀 8686

思路:樹形dp。

我們考慮當前結點 i ,對於結點 i ,它可以屬於它的子樹,也可以不屬於,換句話說,我們可以計算出與 i 結點相連的連通塊中是否具有黑點的方案數。

於是,d【i】表示包含 i 的連通塊中含有黑點,d【i】表示不含有。

接下來考慮狀態轉移方程:

上面的只是我個人認為的。。。可能是錯的哈~

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10 #include11 #include

12using

namespace

std;

13 typedef long

long

ll;14 typedef pairpll;

15const

int inf = 0x3f3f3f3f;16

const

int maxn = 1e5+5;17

const

int mod = 1000000007;18

19int

val[maxn];

20 ll d[maxn][2

];21

22 vectorg[maxn];

2324

void dfs(int u, int

fa)2536}

3738

intmain()

3950

51 memset(d,0,sizeof

(d));

5253

for(int i=0;i)

5457 dfs(0,-1

);58 printf("

%lld\n

",d[0][1

]);59

return0;

60 }

51nod 1500 蘋果曼和樹(樹形dp)

題目 思路 分析狀態間的關係 dp u 1 0 代表與u相連的聯通塊是否具有黑點的方案數 注意有刪邊 dp u 1 當u相連的聯通塊具有黑點時,兒子結點v具有黑點與否都可以 當u相連的聯通塊不具有黑點時,兒子結點必須具有黑點 dp u 0 u相連的聯通塊肯定不具有黑點,兒子結點具有黑點與否都可以 i...

51 nod 蘋果曼和樹

1500 蘋果曼和樹 基準時間限制 1 秒 空間限制 131072 kb 分值 80 難度 5 級演算法題 收藏 關注 蘋果曼有一棵 n個點的樹。有一些 至少乙個 結點被標記為黑色,有一些結點被標記為白色。現在考慮乙個包含 k 0 k n 條樹邊的集合。如果蘋果曼刪除這些邊,那麼會將這個樹分成 k ...

蘋果曼和樹

1.0 秒 131,072.0 kb 80 分 5級題蘋果曼有一棵n個點的樹。有一些 至少乙個 結點被標記為黑色,有一些結點被標記為白色。現在考慮乙個包含k 0 k n 條樹邊的集合。如果蘋果曼刪除這些邊,那麼會將這個樹分成 k 1 個部分。每個部分還是一棵樹。現在蘋果曼想知道有多少種邊的集合,可以...