題目:
思路:分析狀態間的關係
dp[u][1/0]代表與u相連的聯通塊是否具有黑點的方案數(注意有刪邊)
dp[u][1]
當u相連的聯通塊具有黑點時,兒子結點v具有黑點與否都可以
當u相連的聯通塊不具有黑點時,兒子結點必須具有黑點
dp[u][0]
u相連的聯通塊肯定不具有黑點,兒子結點具有黑點與否都可以
**:
#include
using
namespace
std;
const
int mod = 1000000007;
const
int n = 1e5+5;
int x[n];
long
long dp[n][2];
vector
g[n];
int n;
int dfs(int u,int fa)
}int main()
for(int i = 0;i < n;i++)
scanf("%d",&x[i]);
dfs(0,-1);
printf("%lld\n",dp[0][1]);
return
0;}
51 Nod 1500 蘋果曼和樹(樹形dp)
思路 樹形dp。我們考慮當前結點 i 對於結點 i 它可以屬於它的子樹,也可以不屬於,換句話說,我們可以計算出與 i 結點相連的連通塊中是否具有黑點的方案數。於是,d i 表示包含 i 的連通塊中含有黑點,d i 表示不含有。接下來考慮狀態轉移方程 上面的只是我個人認為的。可能是錯的哈 1 incl...
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 個部分。每個部分還是一棵樹。現在蘋果曼想知道有多少種邊的集合,可以...