尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

题解:CF1914F Programming Competition

题解:CF1914F Programming Competition
📅 发布时间:2026/6/19 3:31:22

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 的贡献!

相关新闻

  • 使用云服务器搭建飞牛Frp 内网穿透服务
  • 2025-10-19
  • 2025 年防撞钢护栏生产厂家最新推荐排行榜:桥梁 / 不锈钢 / 复合管 / 景观 / 灯光 / 热镀锌等多类型护栏精选

最新新闻

  • Windows字体自定义终极指南:5分钟快速上手No!! MeiryoUI
  • [STM32WBA] 【NUCLEO-WBA65RI 测评】+ 03定时器16实现LED的闪烁
  • MCP43XX数字电位器SPI接口操作与命令格式实战指南
  • ansys中的雅克比比率
  • 如何快速掌握Adobe软件管理:完整开源工具使用指南
  • 青龙定时任务管理平台:从零开始的完整部署与使用指南

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号