20250917NOIP#21

news/2025/9/18 11:52:34/文章来源:https://www.cnblogs.com/xxmbb/p/19098458

20250917NOIP#21

T2

题意:

给定一个 \(n\) 个点的树,点上有一个非负整数点权 \(a_i\),表示这个点需要在操作序列中正好被经过 \(a_i\) 次,一次操作为选择两个顶点 \(u,v\) ,从 \(u\) 经过简单路径走到 \(v\) ,求最小操作数。

思路:

见到这个题第一眼想到贪心,可以具象化的把一次操作拆成两条线段,线头在 \(u,v\) 分别传向父亲,最终在两个点的 \(lca\) 处汇聚,一个点一定需要被 \(a_i\) 条线段经过,此时的问题就转化成了求最小线段数。

考虑到叶子结点一定需要向父亲发出 \(a_i\) 条线段,在线段不断上传的过程中会合并两条线段。所以我们不妨在开启一条新线段的时候对于答案加一,合并两条线段(在 \(lca\) 处汇聚成 \(1\) 条线段)的时候对于答案减一。

现在就可以考虑与叶子结点直接相连的父亲了,此时他的儿子节点向其传了 \(sum=\sum a_i\) 条线段,显然具体情况需要分讨。

  • \(sum<a_i\),考虑此时合并两条线段时会使 \(a_i\) 减一、 \(sum\) 减二、\(ans\) 减一,但是我们又因为先前的新开线段数为 \(a_i-sum\) ,所以合并之后的新开线段数变成了 \((a_i-1)-(sum-2)=a_i-sum+1\) ,显然对于最终的答案数无影响,但导致此时上传的线段数变少,所以肯定不优。
    综上所述,显然这种情况直接新开新线段即可。

  • \(sum>a_i\) ,此时我们必须要减少 \(sum-a_i\) 个线头,但是这些线头可以在当前节点合并,使得答案有所减少。但是我们考虑为什么需要合并?如果不合并剩下的线段对于答案的作用为何?

    1. 不同儿子向上传递的线头可以在父亲节点合并,使得答案减少 \(1\)
    2. 线头可以使得原本需要开的新线段数减少,即覆盖父亲节点,使得答案减少 \(1\)

    ​ 如果我们此时合并两条线段,答案必定减少 \(1\) ,但是会使得当前节点向上传的线段数减少 \(1\) ,影响即为 可能 会让父亲节点多开 \(1\) 条线段,使得答案增加 \(1\)
    ​ 但是我们可以发现,此时对于答案 \(-1,+1\) 没有具体影响!即使我们不合并这两条线段,到了父亲节点也不会使得答案再次减少。
    (有人会问在父亲节点再次让该线段与其他节点传上去的线段合并,答案不是会减少吗?但是这种情况违反了我们之前的前提:父亲节点需要新开线段。如果父亲节点不需要新开线段,那么答案在当前节点上合并两条线段时本来就会减少 \(1\) ,上述情况只是把贡献延迟到了父亲节点上对于贡献减 \(1\) 而已,所以无影响)

    ​ 所以对于该情况,能合并的线段一定进行合并,显然最优。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/907091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云防刷神器ESA搞活动免费领取

最近使用阿里云的边缘安全加速ESA,防刷、访攻击。 所有套餐支持一键防刷、安全事件分析、频次控制等。 最近搞活动,可以不限次数领取基础版代金券,免费领取链接:http://s.tb.cn/e6.0Fu67m测速效果

报错TypeError: Unknown file extension .ts - broky

当出现这个TypeError: Unknown file extension ".ts"这个报错的时候,可以看看package.json里没有是不是有"type": "module"这个字段,有的话需要去掉

抗 IgE 单克隆抗体联合变应原免疫治疗(AIT):过敏性疾病治疗的协同新策略

过敏性疾病(如哮喘、慢性荨麻疹、过敏性鼻炎)的发病率在全球范围内持续攀升,传统治疗手段(如抗组胺药、糖皮质激素)虽能缓解症状,却难以从根本上改变机体的过敏状态。变应原免疫治疗(AIT)作为唯一能 “重塑免疫…

python虚拟环境管理工具venv教程

python虚拟环境管理工具venv教程 王云峰 ​计算机技术爱好者/CV/ML/Python​关注他收录于 点滴技术62 人赞同了该文章0. 概述 Python有各种各样的系统包和第三方开发的包,让我们的开发变得异常容易。不过也引入了一个…

【收藏必备】ChatGPT拥抱MCP:一条Prompt实现全自动化,小白也能轻松上手 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

php怎么关闭数据库连接

在PHP中,关闭数据库连接是一个很重要的步骤,它可以释放资源并防止不必要的连接浪费。下面是一些关闭数据库连接的常见方法:1. 使用mysqli_close()函数关闭连接:“`$conn = mysqli_connect($servername, $username,…

createHashRouter

createHashRouter This router is useful if you are unable to configure your web server to direct all traffic to your React Router application. Instead of using normal URLs, it will use the hash (#) por…

代码分析之污点分析 - 教程

代码分析之污点分析 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", …

设计模式 7章

软件设计7大原则 开闭原则:是原则,在设计软件时保持扩展的开放性和修改的封闭性 里式替换原则:要求在继承时不要破坏父类的实现 单一职责原则:要求类的功能要单一 接口隔离原则:要求接口的设计要精简 依赖倒置原则…

磁盘存储简介-轮子

https://blog.csdn.net/user2025/article/details/142364353

前端mjs和js文件区别,mjs和cjs区别

前端mjs和js文件区别,mjs和cjs区别.js 文件和 .mjs 文件之间的主要区别在于模块系统的使用: 1. 模块类型.js 文件:默认使用 CommonJS 模块系统(尤其在 Node.js 环境中)。 可以使用 require() 导入模块和 module.e…

洛谷 P1967 [NOIP 2013 提高组] 货车运输 题解

洛谷 P1967 [NOIP 2013 提高组] 货车运输 题解原题链接:货车运输 kruskal重构树+LCA做法,树剖不想写 很容易发现原图跑最短路可以解,但是复杂度难以承受,所以考虑如何简化该图。 发现原图边权维护的应该是(u,v)…

详细介绍:【2026计算机毕业设计】基于Springboot的婚车租赁系统

详细介绍:【2026计算机毕业设计】基于Springboot的婚车租赁系统2025-09-18 11:33 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !imp…

【每日一问】示波器探头校准技巧和校准原理是什么?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

审美积累 | 这样的暗色系音频播放界面怎么做?

审美积累 | 这样的暗色系音频播放界面怎么做? 收集了一些播放页,有需要的伙伴后台私信si,发高清原图一起学习~ 1. 整体视觉风格深色模式优先:黑色或深灰背景,能凸显封面、模块卡片、图标的亮色部分,视觉上更聚焦…

cherry-pick 合并曾今某一次提交

确认当前分支 git checkout test 找到要合并提交的哈希值 git log --oneline 太长的话点击q 退出 切换到我们要合并的分支 git checkout dev 使用 cherry-pick 应用指定提交 git cherry-pick <提交哈希1> 推送到…

向量数据库 FAISS、LanceDB 和 Milvus

FAISS (Facebook AI Similarity Search)本质:一个库 (Library),而不是一个数据库。定位:由 Meta (Facebook) AI 研发的、专注于高效相似性搜索的 C++/Python 库。它的核心使命只有一件事:在海量向量中快速找到最相…

Fast IO 模板

放在 using namespace std; 后面即可。 namespace fast_IO { #define FASTIO #define IOSIZE 100000char ibuf[IOSIZE], obuf[IOSIZE];char *p1 = ibuf, *p2 = ibuf, *p3 = obuf; #ifdef ONLINE_JUDGE #define getchar…

kylin V11安装mysql8.4.5(glibc.2.28版本)

环境:OS:kylin V11mysql:8.4.5 glibc2.28(建议不要安装glibc.2.17版本) 查看系统glibc版本[root@localhost soft]# ldd --versionldd (GNU libc) 2.38Copyright (C) 2023 Free Software Foundation, Inc.This is free …

iOS 上架 App 流程全解析 苹果应用发布步骤、App Store 审核流程、ipa 文件上传与 uni-app 打包实战经验

本文系统解析 iOS 上架 app 流程,涵盖苹果应用从开发者账号注册、证书准备、uni-app 打包、ipa 上传、TestFlight 测试,到 App Store 审核与发布的完整步骤,结合多工具协作,总结高效实用的上架经验。对开发者来说,…