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

题解:CF1914F Programming Competition

Description

给定一棵树,求不互为祖先的点对的最大个数。

Solution

考虑树形 DP。

\(dp_u\) 表示根节点为 \(u\) 的子树的答案。

分类讨论:
设根节点 \(u\) 的重儿子为 \(v\)

  • \(size_v \le \lfloor \frac{size_u - 1}{2}\rfloor\) 时。考虑一种构造使得答案最大:可以对这棵树计算 dfs 序,由同一棵子树内的 dfs 序连续,则可以构成若干段长度均不大于 \(\lfloor \frac{size_u - 1}{2}\rfloor\) 的序列。对于每一段序列里的任意节点,它的 dfs 序加上 \(\lfloor \frac{size_u - 1}{2}\rfloor\) 后的点一定与它不属于同一个序列。所以最大值为 \(\lfloor \frac{size_u - 1}{2}\rfloor\)

  • \(size_v > \lfloor \frac{size_u - 1}{2}\rfloor\) 时:让 \(v\) 以外的节点都和 \(v\) 内未配对的节点两两配对。答案即为 \(f_v + size_u - size_v - 1\)。但是, \(v\) 中的未配对的点不够与 \(v\) 外的点进行配对,这时需要将 \(v\) 中已配对的点拆开与外面的点进行配对。但是,这样可能算重,所以和上界 $$\lfloor \frac{size_u - 1}{2}\rfloor$$ 比较,取小者。

故得转移方程:

\[f_u=\left\{\begin{aligned} &\lfloor \frac{size_u - 1}{2}\rfloor & \quad \rm{if} \quad size_v \le \lfloor \frac{size_u - 1}{2}\rfloor \\ &\min(f_v + size_u - size_v - 1, \lfloor \frac{size_u - 1}{2}\rfloor) & \quad \rm{if} \quad size_v > \lfloor \frac{size_u - 1}{2}\rfloor\end{aligned}\right. \]

Code

#include <bits/stdc++.h>
using namespace std;int t, n, siz[(int)2e5 + 5], f[(int)2e5 + 5];
vector<int> vt[(int)2e5 + 5];void dfs(int u, int fa) {siz[u] = 1;int z = 0;for (int v : vt[u]) {if (v == fa)continue;dfs(v, u);siz[u] += siz[v];if (siz[v] > siz[z]) z = v;}if (siz[z] > (siz[u]-1) / 2) f[u] = min(f[z] + siz[u] - siz[z] - 1, (siz[u] - 1) / 2);else f[u] = (siz[u] - 1) / 2;
}int main() {ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);cin >> t;while (t--) {cin >> n;memset(f, 0, sizeof(f));memset(siz, 0, sizeof(siz));for (int i = 1; i <= n; ++i)vt[i].clear();for (int i = 2; i <= n; ++i) {int p;cin >> p;vt[p].push_back(i);}dfs(1, 0);cout << f[1] << '\n';}return 0;
}

感谢 @zhengjingtian 的贡献!

http://www.hskmm.com/?act=detail&tid=34231

相关文章:

  • 独立开发者找蓝海:新词引流实战
  • 使用云服务器搭建飞牛Frp 内网穿透服务
  • Luogu P14255 列车(train) 题解 [ 蓝 ] [ 线段树 ] [ 二维平面转化 ]
  • 使用VS2022和Unity时可能出现的问题总结
  • 2025年喷雾机器人,取件机器人,工业机器人厂家权威推荐榜单:智能高效与稳定性能的行业首选!
  • 2025年给汤机厂家推荐排行榜,高效节能/智能控制/稳定耐用的优质品牌选择!
  • 理想完美主义者的宣战:当一人面对整个时代的“合理”谎言
  • Java中的this关键字的用法
  • 网络安全威胁狩猎:主动防御的终极指南
  • C#在二合一平板电脑关于旋转模式相关设置
  • 2026 中考游记
  • MinIO 介绍(3)--MinIO 客户端 mc 管理员功能
  • 8.16
  • 2025-10-19
  • 一文读懂隔离见证
  • 12131
  • 关于火柴盒的记忆
  • PWN手的成长之路-19-int_overflow
  • FFmpeg开发笔记(八十四)使用国产的librestreaming实现RTMP直播
  • 2025 年闪测仪厂家企业品牌推荐排行榜,一键式闪测仪,卧式闪测仪,影像闪测仪,立式闪测仪,2D3D 混合式闪测仪,高精度闪测仪,大量程闪测仪,复合式闪测仪公司推荐
  • 2025 年耐火砖厂家企业品牌推荐排行榜,绝热,轻质,莫来石,保温,莫来石轻质,氧化铝泡沫,氧化铝空心球,抗渗碳,高温轻质莫来石,高温耐火砖公司推荐
  • 2025 年护栏板厂家企业品牌推荐排行榜,波形,高速,镀锌,二波,三波,喷塑,国标,绳索,公路护栏板,护栏板立柱公司推荐
  • 2025 年船用锅炉厂家企业品牌推荐排行榜,基于市场口碑,评选值得信赖的船用锅炉公司推荐
  • 2025 年反应釜厂家企业品牌推荐排行榜,实验室,高压,加氢,不锈钢,试验室,氢化,聚合,高温,钛材反应釜公司推荐
  • 2025 年铸铁闸门厂家企业品牌推荐排行榜,四川铸铁闸门,镶铜铸铁闸门,渠道铸铁闸门,圆形铸铁闸门,方形铸铁闸门公司推荐
  • 2025 年启闭机厂家企业品牌推荐排行榜,四川启闭机,四川卷扬启闭机,四川螺杆启闭机,固定卷扬启闭机,手电两用螺杆启闭机,电装启闭机公司推荐
  • 2025 年清污机厂家企业品牌推荐排行榜,四川清污机,格栅清污机,回转式清污机,回转式格栅清污机,不锈钢清污机公司推荐公司推荐
  • AI视频换人工具来了!动作表情完美还原,附下载链接
  • java入门代码示例
  • 下一代超级计算的CPU设计之道