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

题解:P14309 【MX-S8-T2】配对

前言:考场上看出来了某关键性质结果发现做不下去了,然后就寄了。最后因为代码全部加了文件操作荣获总分 0 分的优异成绩。


这种题需要我们多加猜测性质并辅以证明。

性质 #1

我们先不考虑任何修改操作。

一个子树内的 \(1\) 的点的个数如果是偶数,那么它必然在这个子树内匹配完,如果是奇数那么它能且仅能剩下一个 \(1\) 没有匹配。这样一定最优

证明.考虑一种简单情况

如果我们选择下面两个点和上面两个点分别各自匹配,则代价就是 \((w_4+w_5)+w_1\)

如果是一个下匹配一个上,代价就是 \((w4+w3+w2)+(w5+w3+w2+w1)\)

显然前者小于后者。

性质 #2

我们发现甚至构造方案都很费劲,于是显然需要更加优秀的答案计算方式。这也是本题的核心。

令每条边把树分成两侧。

记子树内 \(k\) 为该侧的 \(1\) 的个数(以任意根化,把边看作“父-子”边,\(k\) 取子侧的 \(1\) 个数)。

若不做交换,
得到的最小总代价

\[ S_0=\sum_{\text{父-子边 }(p-v)} w_{pv}\cdot (k_v\bmod 2). \]

感性证明:

  1. 每条边仅可能不被经过或者经过一次。(由性质 #1)
  2. 某边只有在两侧奇偶不一致时才必须被若干配对经过一次,从而计入其权重。(由性质 #1)

粗略地理解,\(k_v\) 是偶数则在这个子树内部的点必然被消化完全, \(k_v\) 是奇数则这个子树内部的点必然会有且仅有一个 \(1\) 节点需要往上去匹配。

此时暴力修改,我们能获得50pts。


现在引入修改。我们首先发现很难处理,但是你不能寄了。

尝试从特殊性质去入手。

特殊性质保证了 \(1\) 节点的个数是偶数。

那如果是奇数我们该怎么做?

实际上就是任意删去一个 \(1\) 节点。或者说,把 \(1\) 节点变成 \(0\) 。这实际上是一个取反操作

再回到修改操作。我们发现,修改操作本质上也是对一个 \(0\) 节点和一个 \(1\) 节点 一起进行取反操作

然后便可以树形 DP 。设 \(f_{i,a,b}\) 表示以 \(i\)为根节点的子树中取反 \(a\)\(1\)\(b\)\(0\) 的最小代价。这样就可以爆做了。

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

相关文章:

  • HuggingFace 库使用小技巧
  • 启动分布式mapreduce的过程以及prompt
  • 【ArcMap】复制选中的线并将其上移一段距离
  • 题解:AT_apc001_h Generalized Insertion Sort
  • 记一次thinkphp3.2项目迁移失败的原因。 is currently unable to handle this request. HTTP ERROR 500
  • 20232310 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • [SWPUCTF 2024 秋季新生赛]http标头 WP
  • 20251025 之所思 - 人生如梦
  • Jerrum–Sinclair 全有或全无定理
  • 一种解决所有 OI 问题的算法:Dream 算法
  • CobaltStrike流量分析
  • 【论文阅读】ASPS: Augmented Segment Anything Model for Polyp Segmentation - 指南
  • RuoYi-Cloud 认证实现
  • 初步学习计算机相关知识有感 - fang
  • 2025年自动上料机厂家权威推荐榜:螺旋上料机/真空上料机/粉末上料机,高效输送系统精准选型指南
  • 用代码将txt分别转换成列表和字典
  • 每日反思(2025_10_25)
  • AtCoder Beginner Contest 429 ABCDEF 题目解析
  • 2025年提升机厂家推荐排行榜,自动提升机,垂直提升机,物料提升机,工业提升设备公司精选
  • 刷题日记—数组—布尔数组的应用
  • 详细介绍:k8s中的kubelet
  • 树状数组 区间加 区间和 小记
  • 实验二 现代C++编程初体验
  • 昨夜雨疏风骤
  • 明天的任务
  • Windows SMB权限提升漏洞遭活跃利用
  • 江西振兴杯决赛Misc全解
  • 完整教程:Webpack5 第四节
  • 2025.10.25总结
  • ABC429