Description

给一棵树,每个点是子节点的最大值或最小值,将叶子节点填上整数,使这棵树的根最大。

Solution

明显的\(dp\)题,代码很短。

分类讨论如下:

1、如果是叶子节点,\(d_x = 1\)

2、如果是\(min\)节点,\(d_x =\sum_{y \in son_x} d_y\)

3、如果是\(max\)节点,\(d_x = min_{y \in son_x} d_y\)

#include <bits/stdc++.h>
using namespace std;
const int N = 300005;
int n, a[N], b[N], x, k, ans[N], c[N];
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
ans[i] = a[i] ? n + 1 : 0, c[i] = -1;
}
for (int i = 2; i <= n; i++) {
scanf("%d", &x);
b[i] = x, c[x] = i;
}
for (int i = n; i > 1; i--) {
if (c[i] == -1)
ans[i] = 1, k++;
x = b[i];
ans[x] = a[x] ? std::min(ans[x], ans[i]) : ans[x] + ans[i];
}
printf("%d\n", k + 1 - ans[1]);
return 0;
}

最新文章

  1. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 区域管理功能增强(电子商务方向)
  2. 9.5.8 Optimizing InnoDB Disk I/O
  3. hdu2037-----------贪心, 活动安排问题
  4. gem
  5. gameObject, vector and transform
  6. aspose.cell制作excel常见写法
  7. 模拟app上商品详情点击图片放大并且可以切换大图
  8. strlen与sizeof有什么区别?
  9. HDU 4777 Rabbit Kingdom
  10. 伙计,给我来一杯package.json!不加糖
  11. Spring揭秘 读书笔记 四----方法注入
  12. python os.walk()方法--遍历当前目录的方法
  13. json如果不在pom中添加依赖会抛出500异常
  14. 深入理解JVM(二)Java内存区域
  15. ASS字幕制作
  16. VS复制文件到输出目录
  17. 02 如何创建线程 线程并发与synchornized
  18. Ansible 使用 Playbook 安装 Nginx
  19. Codeforces Round #265 (Div. 2) E
  20. 初始CSS模板

热门文章

  1. 20190329-盒尺寸、boder-
  2. js 百度地图定位
  3. CSS中盒模型的理解
  4. 【设计模式】组合模式 Composite Pattern
  5. Python网络爬虫-信息标记
  6. 纯Java实现微信朋友圈分享图
  7. hbase 预分区与自动分区
  8. go语言打造p2p网络
  9. CENTOS重新安装JDK
  10. MyBatis学习日记(一):拜见小主——MyBatis