题目描述
题解
贪心:如果一个点被覆盖,那么它的父亲和所有儿子都没必要被覆盖;如果一个点的父亲被覆盖,那么这个点以及它所有的兄弟都没必要被覆盖。所以可以遍历每一个点,如果这个点所有的儿子都没被覆盖并且这个点也没被覆盖,就将它的父亲覆盖,答案+1。
dp:
f[i][0]:以i为根的子树中所有点均被覆盖且草地i上无信号塔所需的最小塔数(i被其儿子覆盖)
f[i][1]:以i为根的子树中所有点均被覆盖且草地i上有信号塔所需的最小塔数
f[i][2]:以i为根的子树中除i点以外其余点均被覆盖所需的最小塔数
代码
贪心
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int max_n