备战蓝桥杯---动态规划的一些思想2

03-07 1075阅读

话不多说,直接看题:

1.换根DP:

备战蓝桥杯---动态规划的一些思想2

我们肯定不能对每一个根节点暴力求,我们不妨先求f[1],我们发现当他的儿子作为根节点时深度和为f[1]+(n-cnt[i])-cnt[i](cnt[i]表示以i为根的节点数),这样子两遍DFS即可,下面是AC代码:

#include
using namespace std;
int n,x,y,cnt[1000020],dep[1000010];
long long f[1000010];
vector edge[1000010];
void dfs1(int root,int fa){
    cnt[root]=1;
    for(int i=0;in;
    for(int i=1;i
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]