当前位置: 首页 > news >正文

树形DP2F

T1 树的直径

我们使用\(f[u]\)表示以\(u\)为根的子树,向下延伸的最远距离
那么\(f[u]\)的初始值为0,表示\(u\)能向下延伸的最远距离是自己,\(f[u]=0\)
\(ans=max(ans,f[u]+f[v]+w)ans\)表示直径

错误1

如果有负边权,所以我把\(f[u]\)的初值设置成为一个极小值,这样的话,和\(f[u]\)的意义就背离了,所以不能这样设置,如果有负边权,我们就把\(ans\)的初值设置为极小值就可以了
如果我们把\(f[u]\)设置成极小值,下述的图就会出错,找不到最长的直径为7
image

同时,直径指的是树上两点之间的最远距离,如果所有的边权都是负数,那么直径就是所有负边权的最大值

T2 直径的个数

image
我们先来看这棵树的直径长度是14,共有12个
考虑12个点对从何而来?4和8,9,10,5和8,9,10,依次类推
如果\((u,v)\)构成了直径,那么和\(f[u]\)最远距离相同的点共有多少个,假设有\(num[u]\)个,同理,也有\(num[v]个\),那么直径的个数要加上\(num[u]\)*\(num[v]\),刚开始\(num[u]=1\),表示距离为0的点有一个,就是自己,其余的部分,和更新最大值是相同的

#include<bits/stdc++.h>
using namespace std;
const int maxn=100005;
int n,zj;
int f[maxn],num[maxn];
long long ans;
vector< pair<int,int> >g[maxn];
void dfs(int u,int fa){num[u]=1;for(auto x:g[u]){int v=x.first;int w=x.second;if(v==fa) continue;dfs(v,u);int dis=f[v]+w;if(dis+f[u]>zj){zj=dis+f[u];ans=num[u]*num[v];}else if(dis+f[u]==zj){ans+=num[u]*num[v];}if(dis>f[u]){num[u]=num[v];f[u]=dis;}else if(dis==f[u])num[u]+=num[v];}
}
int main(){cin>>n;for(int i=1;i<n;i++){int x,y,z;cin>>x>>y>>z;g[x].push_back({y,z});g[y].push_back({x,z});}dfs(1,-1);cout<<zj<<" "<<ans;return 0;
}

T3 Sabota

这个题刚开始的想法是二分答案,假设\(x\)为叛徒的占比,那么我们来看一下以1为根的子树,叛徒的个数会不会超过\(k\)
我们设\(f[u]\)表示以\(u\)为根的子树叛徒的最大数量

http://www.wxhsa.cn/company.asp?id=4746

相关文章:

  • 搞定SPI开发:硬件设计精讲与CH390H示例应用
  • Qt-摄像头捕获画面
  • 我开发的软件和开源/免费软件
  • PostgreSQL中级认证,PG证书官网查询
  • LLaMA-Adapter - 详解
  • 查看安装软件版本的命令
  • ubuntu 20.04安装mysql 5.7
  • 企业微信逆向开发协议,ipad协议调用方式
  • OpenStack Nova Scheduler 计算节点选择机制
  • 记一种很新的 bitset
  • 基于yolo12进行深度学习的机动车车牌检测
  • 有向图强连通分量
  • Kafka 消费者元数据topicId变化问题
  • 【SPIE出版】第五届生物医学与生物信息工程国际学术会议(ICBBE 2025)
  • Qoder 全新「上下文压缩」功能正式上线,省 Credits !
  • journald 持久化 + 限额脚本
  • 【2025-09-14】连岳摘抄
  • 深入解析:PAT乙级_1125 子串与子列_Python_AC解法_含疑难点
  • ESP32-S3 与GPS北斗通信返回定位/海拔/速度数据的测试代码
  • GZY.Quartz.MUI(基于Quartz的UI可视化操作组件) 2.8.0发布 新增仪表盘和检索功能
  • AIGEO助力企业破局
  • 东南大学数据库课程06-Database Design
  • MacOS升级15.2后的问题(二):无法修改mac网络地址
  • 东南大学数据库课程07-Distributed Database Systems
  • HCIA——VLAN间通信
  • Xdebug安装与PhpStorm调试配置
  • vue - 内置指令
  • 东南大学数据库课程02-DataModel数据模型
  • Torch核心数据结构Tensor(张量)
  • vue - 进阶