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

CF1375G Tree Modification 题解

\(\text{CF1375G Tree Modification 题解}\)

相当能引起思考的题目,这里给出两种方法。

首先这个操作相当于把一个节点的孙子及这个孙子的儿子拽上来作为它的儿子,这样的话从下往上合并一定是最优的。那么容易想到的是做一个 dp,定义 \(dp_{x}\) 表示 \(x\) 子树内形成了二叉树的结构所需最少步数,那么转移式子大概形如 \(dp_{fa_x}=\sum dp_{y\in son_x}+1\)。然后我们可以直接换根。令 \(1\) 为初始根,那么换根的时候发现对于 \(y\notin son_1\),令 \(t=fa_{fa_y}\),有 \(ans_y=dp_y+(ans_t-dp_y-1)-1\),换句话说树上任何两个距离为 \(2\) 的点作为根时答案是相等的,那么我们只需要取 \(dp_1\)\(dp_{son_x}\) 就可以通过了。给出代码:

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int n;
vector<int>v[N];
int dp[N];
void dfs(int x, int fa) {for (int y : v[x]) {if (y == fa) continue;dfs(y, x);dp[fa] += dp[y] + 1;}
} 
int main() {ios::sync_with_stdio(0);cin.tie(0);cin >> n;for (int i = 1; i < n; i++) {int x, y;cin >> x >> y;v[x].push_back(y);v[y].push_back(x);}dfs(1, 0);int ans = dp[1];memset(dp, 0, sizeof dp);dfs(v[1].back(), 0);cout << min(ans, dp[v[1].back()]) << '\n';return 0;
}

这样暴力换根 dp 还是显得有点蠢了。既然我们在最后换根的时候有更好的性质,那么我们是不是有更好的方法解决这个问题呢?

考虑刚才发现的性质是和距离有关,那么考虑从距离的角度表述一次操作。发现一次操作相当于把 \(x\) 儿子距离根的距离减少 \(1\),把 \(x\) 子树内所有节点距离根的距离减少 \(2\),其它不变。关注这个特殊的 \(x\) 的儿子,发现只有它距离根的距离的奇偶性发生了改变,那么进行黑白染色,一次操作相当于改变一个点的颜色,最终要求只有一个点的颜色和其它点的不一样,于是直接黑白染色即可。仔细想想这个东西才是换根 dp 时那个性质的本质。

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int n;
vector<int>v[N];
int a[2];
void dfs(int x, int fa, int o) {++a[o];for (int y : v[x]) {if (y == fa) continue;dfs(y, x, !o);}
} 
int main() {ios::sync_with_stdio(0);cin.tie(0);cin >> n;for (int i = 1; i < n; i++) {int x, y;cin >> x >> y;v[x].push_back(y);v[y].push_back(x);}dfs(1, 0, 0);cout << min(a[0], a[1]) - 1 << '\n';return 0;
}
http://www.jsqmd.com/news/43044/

相关文章:

  • AI评价11月17号
  • 避雷:aicodemirror.com --- 酒干倘卖无
  • 9-线性学习
  • AT AGC003 题解
  • Oracle故障处理:aix 5.3 ml6安装10.2.0.1 rac报错
  • Hive SQL循环与MapReduce的关系
  • 《算 设》学
  • [GESP202506 二级] 幂和数
  • hive mybatis是否支持动态SQL
  • 一类将度数变为 1/2 的优化建图 笔记
  • 2025.11.17模拟赛
  • 11/17
  • 英语_阅读_Electric cars_待读
  • linux 下中文字体安装.ttf 格式
  • 2025 年锚具厂家 TOP 企业品牌推荐排行榜,预应力锚具 / 五孔锚具 / 低回缩锚具 / 张拉锚具 / 固定端锚具 / 桥梁预应力锚具 / 边坡锚具公司推荐!
  • 2025 年锚具厂家 TOP 企业品牌推荐排行榜,桥梁伸缩缝 / 道路伸缩缝 / 梳齿板伸缩缝推荐这十家公司!
  • 2025 年锚具厂家 TOP 企业品牌推荐排行榜,橡胶支座 / 桥梁支座 / 国标支座 / 滑板支座 / 固定支座 / 弹性支座 / 活动铰支座 / 盆式支座 / 减震支座 / 缓冲支座公司推荐!
  • 软件工程学习日志2025.11.17
  • CSP2025 游记 + whk 期中
  • 论文速读 | 2025年11月
  • 2025-11-17
  • 九成九新自用C#入门文档
  • 商场展览车生产厂家十大排名及选购推荐,航利通达网红礼盒拖车公司,透明车厢生产厂家,车载展柜公司十大权威排行,商场展览车公司十大排名
  • Flask+Celery+Blueprint
  • 102302109-胡贝贝-作业3
  • hadoop linux 安装
  • 2025最新展柜设计公司推荐,展柜制作公司,展台源头厂家,烤漆展柜十大品牌推荐榜,家纺柜台供应厂家十大排行榜:梵之宇装饰推荐
  • 团队技术资产建设:从散兵游勇到标准化作战
  • 2025年11月学习机榜单:打破智商税偏见,十大提分机型实证推荐
  • 解决罗技M590右键必须用力才能使用的问题