Codeforces Round #263 (Div. 2) D. Appleman and Tree 树形dp
链接:
http://codeforces.com/contest/462/problem/D
题意:
给定n个点的树,
0为根,下面n-1行表示每个点的父节点
最后一行n个数 表示每个点的颜色,0为白色,1为黑色。
把树分成若干个联通块使得每个联通块有且仅有一个黑点,问有多少种分法(结果mod1e9+7)
题解:
树形dp,每个点有2个状态,已经归属于某个黑点和未归属于某个黑点。
代码:
31 int n; 32 int x[MAXN]; 33 VI G[MAXN]; 34 ll dp[MAXN][2]; 35 36 void dfs(int u) { 37 if (x[u]) dp[u][1] = 1; 38 else dp[u][0] = 1; 39 rep(i, 0, G[u].size()) { 40 int v = G[u][i]; 41 dfs(v); 42 ll old[2] = { dp[u][0], dp[u][1] }; 43 dp[u][0] = (old[0] * dp[v][1] + old[0] * dp[v][0]) % MOD; 44 dp[u][1] = (old[1] * dp[v][1] + old[1] * dp[v][0] + old[0] * dp[v][1]) % MOD; 45 } 46 } 47 48 int main() { 49 ios::sync_with_stdio(false), cin.tie(0); 50 cin >> n; 51 rep(i, 1, n) { 52 int p; 53 cin >> p; 54 G[p].pb(i); 55 } 56 rep(i, 0, n) cin >> x[i]; 57 dfs(0); 58 cout << dp[0][1] << endl; 59 return 0; 60 }
转载于:https://www.cnblogs.com/baocong/p/7288245.html
Codeforces Round #263 (Div. 2) D. Appleman and Tree 树形dp相关推荐
- Codeforces Round #263 (Div. 2) D. Appleman and Tree(树形DP)
题目链接 D. Appleman and Tree time limit per test :2 seconds memory limit per test: 256 megabytes input ...
- Codeforces Round #263 (Div.1) B. Appleman and Tree
题目地址:http://codeforces.com/contest/461/problem/B 题目大意:给一棵树.每一个点为白色或黑色.切断一些边,使得每一个连通块有且仅有一个黑点,问划分方案数. ...
- Codeforces Round #595 (Div. 3) F. Maximum Weight Subset 树形dp
传送门 文章目录 题意: 思路: 题意: n≤200n\le200n≤200 思路: 明显的树形dpdpdp,所以考虑一下dpdpdp状态. 这个题状态挺神的..可能是因为我太菜了,看了半天才看懂. ...
- Codeforces Round #786 (Div. 3) G. Remove Directed Edges——树形dp+记忆化
思路参考 题目链接 思路 题目要求删除一些边,要让最后每个点的入度,出度都小于最开始的情况,或者等于0. 那么出度为1或者入度为1的边一定会被删掉,而且题目说明不存在重边和环,最后的结果一定是一条链. ...
- Codeforces Round 263(Div. 2)
layout: post title: Codeforces Round 263(Div. 2) author: "luowentaoaa" catalog: true tags: ...
- Codeforces Round #453 (Div. 1) D. Weighting a Tree 构造 + dfs树
传送门 文章目录 题意: 思路: 题意: 给你一颗nnn个点的图,每个点都有一个点权cic_ici,要求你给每个边赋一个权值kik_iki,要求对于每个点与他相连的边的权值之和等于这个点的点权ci ...
- Codeforces Round #246 (Div. 2) D. Prefixes and Suffixes kmp + dp
传送门 文章目录 题意: 思路: 题意: 思路: 通过完美子串的定义,我们不难发现满足条件的子串就是kmpkmpkmp中ne[n]ne[n]ne[n]不断向前跳得到的串,现在问题就是如何求这些前缀串在 ...
- Codeforces Round #620 (Div. 2) F2. Animal Observation (hard version) dp + 线段树
传送门 文章目录 题意: 思路: 题意: 比如下面这个图: 思路: 对于这个题,比较容易就能考虑到dpdpdp,设f[i][j]f[i][j]f[i][j]为到了第iii行,覆盖了[j,j+k−1][ ...
- Codeforces Round #319 (Div. 1) B. Invariance of Tree 构造
B. Invariance of Tree Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/576/ ...
最新文章
- OpenResty搭建高性能服务端
- Django重新整理
- hdu3177 贪心
- (转)Web Framework 的速度与激情 16 正式上映
- 巴什博弈例题:NYOJ23;HDU:2149,1847,2897,2188
- HihoCoder - 1591 锦标赛(最大费用最大流)
- MVC自动配置原理---SpringBoot
- java math 类_Java Math类静态长轮(double d)示例
- UVAoj 348 - Optimal Array Multiplication Sequence
- 如何选择华为MATE 30 PRO 5G和P40 PRO?
- 设计模式之——建造者模式
- Es6模板字符串封装与使用
- DDPM代码详细解读(1):数据集准备、超参数设置、loss设计、关键参数计算
- 佐治亚理工计算机科学录取,佐治亚理工学院计算机科学专业排名第8(2020年USNEWS美国排名)...
- dfuse 发布自助 Auth API 账户管理门户,赋予开发者自主管理 key 的平台
- 海尔空调、新风系统加装wifi模块
- 笔记本不显示计算机储存盘,电脑开机黑屏只有鼠标箭头的解决办法 电脑硬盘无法分区怎么办...
- CSS阿里矢量图标(字体图标)
- c++第四天(补充引用的定义)
- Flash动画学习指南:帧频(Frame rates)
热门文章
- 泛型类有什么作用_3 分钟带你彻底搞懂 Java 泛型背后的秘密
- 不使用杀毒软件就上网也不会感染计算机病毒,【判断题】不使用杀毒软件就上网也不会感染计算机病毒。
A. 正确
B. 错误...
- java swing进度条_Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)
- python程序操作的核心_python核心编程-第五章-个人笔记
- LeetCode 1984. 学生分数的最小差值
- LeetCode 241. 为运算表达式设计优先级(动态规划)
- verilog设计简易正弦波信号发生器_信号发生器工作原理是什么
- 计算机设备报废流程图,报废流程图.ppt
- c语言结构内部定义指针,C语言知识补漏(一)结构体指针以及位域定义
- 安装linux出现基础系统出错,Linux系统出错提示信息详解