当前位置: 首页 > 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.zskr.cn/news/30546.html

相关文章:

  • 【ArcMap】复制选中的线并将其上移一段距离
  • HuggingFace 库使用小技巧
  • 【打造自己的 DeepSeek】第 2 期:怎么安装自己的 DeepSeek?
  • 一种解决所有 OI 问题的算法:Dream 算法
  • CobaltStrike流量分析
  • 2025年自动上料机厂家权威推荐榜:螺旋上料机/真空上料机/粉末上料机,高效输送系统精准选型指南
  • 建立VLAN间通信
  • 详细介绍:React Native 中的 useState、Context
  • 明天的任务
  • 深度神经网络 —— 使用深度自动编码器进行手写数字的去噪音
  • 完整教程:Webpack5 第四节
  • 完整教程:ACWing08:高精度专题
  • 使用本地git命令行拉取github.com软件仓库public项目
  • 10.25 CSP-S模拟39/2025多校冲刺CSP模拟赛8 改题记录
  • 嵌入子流形
  • 玩转单片机之智能车小露——数字与字符串的转换与打印
  • linux磁盘管理-RAID介绍 - 详解
  • Link-Cut Tree
  • 线段上随机取n个点的最大距离期望
  • 第5天(中等题 滑动窗口、逆向思维)
  • Meet in the middle 学习笔记
  • 虚拟机下 安装 ubuntu 18.04
  • 路径规划算法学习Day2:广度优先搜索算法(BFS)
  • 完整教程:ros_control 中 hardware_interface 教程
  • 飞牛NAS的SSL证书过期,又开启了强制HTTPS,进不去界面修改SSL怎么办? - 详解
  • 多表查询-练习
  • 小程序原创--基于微信开发者工具实现的猜谜游戏程序 - 教程
  • ReactUse 与ahook对比 - 实践
  • 遗传改良中的核心技术:交配设计
  • 分享二个实用正则