当前位置:网站首页>2022杭电多校六 1006-Maex (树形DP)
2022杭电多校六 1006-Maex (树形DP)
2022-08-05 05:42:00 【AC__dream】
题目链接:https://vjudge.net/contest/508623#problem/F
题目:
样例输入:
3
5
1 2
3 2
1 5
4 1
3
1 2
2 3
1
样例输出:
8
6
1
题意:给你一个n个节点的有根树,根节点是1,我们可以给n个节点每个节点一个权值,但是任意两个节点的权值是不能相同的,定义bi为以第i个节点为根的子树中所有节点权值的mex值,的问我们的最大值。
因为每个节点的权值必须两两不同,0只能在某个子树内,所以除了这个子树之外的其他节点所对应的b一定为0,所以我们可以尽可能让这棵子树之内的所有点的权值尽可能连续,那么我们根节点的b值就大。我们可以令f[i]表示以i节点为根的子树中所有节点的mex之和最大值是多少,再用一个cnt[i]记录以i节点为根的子树中所有节点的个数是多少,那么我们直接进行动态转移即可:f[u]=cnt[u]+max(f[v])其中v是u的子节点。
细节见代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
using namespace std;
const int N=5e6+10;
int e[N],ne[N],h[N],idx;
int cnt[N];
long long f[N];//f[i]记录以i节点为根的子树中所有节点的mex之和的最大值
void add(int x,int y)
{
e[idx]=y;
ne[idx]=h[x];
h[x]=idx++;
}
void dfs(int x,int fa)
{
cnt[x]=1;
long long t=0;//记录子节点贡献最大值
for(int i=h[x];i!=-1;i=ne[i])
{
int j=e[i];
if(j==fa) continue;
dfs(j,x);
cnt[x]+=cnt[j];
t=max(f[j],t);
}
f[x]=cnt[x]+t;
}
int main()
{
int T;
cin>>T;
while(T--)
{
idx=0;
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++) h[i]=-1;
int u,v;
for(int i=1;i<n;i++)
{
scanf("%d%d",&u,&v);
add(u,v);add(v,u);
}
dfs(1,-1);
printf("%lld\n",f[1]);
}
return 0;
}
边栏推荐
- DevOps-了解学习
- Cocos Creator Mini Game Case "Stick Soldier"
- 【8】Docker中部署Redis
- Pytorch distributed parallel processing
- 【内推】新相微电子
- Nacos集群的搭建过程详解
- Quick Start to Drools Rule Engine (1)
- Media query, rem mobile terminal adaptation
- Chengyun Technology was invited to attend the 2022 Alibaba Cloud Partner Conference and won the "Gathering Strength and Going Far" Award
- ev加密视频转换成MP4格式,亲测可用
猜你喜欢
Nacos集群的搭建过程详解
摆脱极域软件的限制
深夜小酌,50道经典SQL题,真香~
LeetCode practice and self-comprehension record (1)
txt文件英语单词词频统计
LaTeX uses frame to make PPT pictures without labels
Transformer详细解读与预测实例记录
DevOps - Understanding Learning
Detailed explanation of the construction process of Nacos cluster
Collision, character controller, Cloth components (cloth), joints in the Unity physics engine
随机推荐
Jenkins详细配置
wc, grep, tar, vi/vim
Cloud Computing Basics - Study Notes
盒子模型中过度约束问题及其解决办法
【FAQ】CCAPI兼容EOS相机列表(2022年8月 更新)
D39_ coordinate transformation
DevOps流程demo(实操记录)
单片机期末复习大题
自营商城提高用户留存小技巧,商城对接小游戏分享
numpy.random使用文档
VRRP overview and experiment
【5】Docker中部署MySQL
格式化代码缩进的小技巧
ev加密视频转换成MP4格式,亲测可用
MyCat安装
System basics - study notes (some command records)
前置++和后置++的区别
document.querySelector()方法
网络排错基础-学习笔记
Configuration of routers and static routes