題意:
給出一棵樹,要將樹上的點染成白色或者黑色,有乙個限制條件,任意兩個黑色的點的lca的顏色也必須是黑色,求染色的方案數。
題解:
設dp[i]表示以i為根節點的子樹的至少有乙個黑點的方案數,空集就是dp[i]+1
1.若點u為黑點,那麼子節點怎麼染色都可以,dp[u]=∏(dp[v]+1)
2.若u為白色的點,那麼子節點至少有乙個黑點,dp[u]+=dp[v]
最後答案就是ans=dp[1]+1;
**:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define iss ios::sync_with_stdio(false)
using
namespace std;
typedef
unsigned
long
long ull;
typedef
long
long ll;
const
int mod=
1e9+7;
const
int maxn=
1e6+5;
int head[maxn]
;int cnt=0;
ll dp[maxn]
;struct node
e[maxn<<1]
;void
add(
int u,
int v)
void
dfs(
int u,
int f)
dp[u]
=sum1;
dp[u]
=(dp[u]
+sum2)
%mod;
}int
main()
dfs(1,
-1);
ll ans=
(dp[1]
+1)%mod;
printf
("%lld\n"
,ans)
;}
牛客練習賽62
傳送門 沒參加這場比賽,賽後做了下de題,還是寫下題解吧。題意 牛牛和小青蛙froggy是好朋友。牛牛有 n 種很大的數,每種數有無限個,牛牛可以從這些數中任選若干個 至少1個 並把它們拼接起來,拼接順序任意,所有可以被這樣拼接起來的數被成為 呱數 如果乙個 呱數 還滿足它是 p 的倍數,牛牛稱它為...
牛客練習賽68 A 牛牛的Mex
傳送門給乙個0 n 1的排列,q個詢問,詢問區間的mex。mex定義為最小未出現的自然數。我們隊三個人看到這題第一反應上莫隊,jhlp哈哈哈哈 然後掏出莫隊板子火速a了 我是賽後再來回顧的,發現由於這題陣列比較特殊是有更符合這道題背景的做法的。首先考慮莫隊做法 莫隊的話首先要對詢問區間排個序,然後主...
牛客練習賽63 B牛牛的魚缸
題目描述 牛牛有乙個長為l,寬為1,高為h的魚缸,現在他想要在魚缸中盛一些水。他想要知道這個魚缸最多能夠放多少水。當然這個問題太過於簡單,所以牛牛將這個魚缸放到了乙個長為l,高為h的斜坡上面,如圖所示,魚缸寬度為1的這條邊緊緊靠在斜坡與地面的交界線上。在不允許移動魚缸與斜坡的情況下。魚缸最多能夠放多...