首页
比赛
tracker
题库
课程
竞赛讨论区
登录
/
注册
去牛客
首页
>
小红树上染色
7条解析
开通博客写题解
pandaC222
发表于 2026-04-16 01:06:16
这是一道树形dp哦我们可以知道,如果一个节点为白色,那他的父节点一定得是红色,如果一个节点是红色,那他的父节点可以是白色或者红色这可以推出状态转移方程了,我们从根部向上转移:(0代表白色,1代表红色)dp[u][0] = (dp[u][0] * dp[v][1]) % mod; 父节点为白色子节点只
展开全文
AliLexiWalker
发表于 2026-04-16 02:17:48
树形DP分两种状态,当前点不染红则孩子必须染红,当前点染红则孩子可红可白,最后把根节点两种状态相加取模即可。 void solve(){ int n;cin>>n; vvi c(n+1); for(int i=1;i<n;++i){ int
展开全文
小男娘
发表于 2026-04-16 01:16:04
考虑一个点染不同颜色的条件喵如果这个点是红色,那么她的儿子红白都可以喵如果这个点是白色,那么她的儿子只能是红色喵所以只要记录每个子树根节点是红色和白色的方案数,就可以用乘法原理递推喵于是我们用树形 DP 轻松解决了这题喵,答案就是根的红白方案数之和喵 #include <iostream>
展开全文
YouYeah
发表于 2026-04-16 19:54:23
#include<iostream> #include<vector> using namespace std; const int mod(1e9 + 7); vector<vector<int>> rec; pair<long long in
展开全文
此在Dasein
发表于 2026-04-16 02:30:21
问题分析 该问题的核心约束是“不存在两个白色节点相邻”。在图论语境下,如果我们定义被染红的节点集合为 ,那么未被染红的节点(白色节点)集合为 。题目要求 中任意两个节点之间没有边相连,这等价于说 是一个独立集(Independent Set)。 进一步转化,若 是独立集,那么其补集 (即红色节
展开全文
chenlan114
发表于 2026-04-16 12:10:47
栈优化的树形dp #include<bits/stdc++.h> using namespace std; using ll=long long; const ll N=1e5+5,mod=1e9+7; vector<vector<ll>>adj(N); vec
展开全文
Hauauah
发表于 2026-04-16 16:36:14
#include <iostream> #include <vector> using namespace std; #define int long long const int mod = 1e9 + 7; vector<vector<int>>
展开全文
查看本题
查看本题讨论
相关比赛
73760-牛客周赛 Round 30
进入比赛
73796-牛客周赛30 内测
进入比赛
74654-11
进入比赛
74677-测试数据
进入比赛
74899-2023年蓝桥杯软件类个人赛校内集训-18
进入比赛
等你来战
查看全部
牛客练习赛151
报名截止时间:2026-04-17 21:30
牛客周赛 Round 140
报名截止时间:2026-04-19 21:00
牛客练习赛152
报名截止时间:2026-04-24 21:30
华中地区高校第十九届程序设计邀请赛(同步赛)
报名截止时间:2026-04-25 10:00
2026年ICPC新疆维吾尔自治区大学生程序设计竞赛
报名截止时间:2026-04-16 10:00
牛客周赛 Round 141
报名截止时间:2026-04-26 21:00
2026牛客五一集训派对day1
报名截止时间:2026-05-01 17:00
哈尔滨华德学院第十七届程序设计竞赛(同步赛)
报名截止时间:2026-05-12 17:00
汤圆头 Round 1
报名截止时间:2026-07-06 17:00
扫描二维码,关注牛客
意见反馈
下载牛客APP,随时随地刷题