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

AH2022 钥匙

钥匙

洛谷 P8339

钦定当有很多把钥匙能打开开宝箱时使用最后拿到的一把(应该要想想用第一把打开,实际不好做。)

每种颜色 \(col\) 的钥匙和宝箱是互相独立的,可以对每种颜色建出虚树。对于一把钥匙 \(u\),以它为根进行搜索,记录一个值 \(c\)。碰到颜色为 \(col\) 的钥匙 c++,碰到颜色为 col 的宝箱 c--,当到达 \(v\)\(c\) 第一次变成 \(0\) 就说明 \(u\) 打开 \(v\) 了(这也时为什么钦定最后一把打开 \(v\),否则可能时 \(u\) 另一棵子树内的钥匙打开 \(v\))。

因为每种颜色只有 \(5\) 把钥匙,总共只有 \(5n\)\((u, v)\)

现在问题就转化为了 \(s\)\(e\) 的路径会经过多少对 \((u, v)\),这和 HNOI2015 接水果 一样的。考虑 \((u, v)\) 会对哪些 \(s, e\) 做贡献,分讨一下 \(u, v\) 是否为祖孙关系,发现 \(s, e\)dfs 序分别在 \(1/ 2\) 个区间内,转化为二维数点问题树状数组做即可。

时间复杂度:\(O((5n + m) \log (5n + m))\),常数还是不小的,似乎要把 \((u, v)\) 拆成至多 \(4\) 个算,注意空间。


总的来说,这个题要想到钦定哪把钥匙来开当前的宝箱(无非两种,都试试吧),然后建出虚树求出 \((u, v)\)。就转化为了一个子问题,做过原题还是不难想到接下来怎么做的,就是把它拍到 dfs 序上然后二维数点。

虚树可以利用在这种若干个互不干扰的问题上,这种路径包含问题转化为二维数点也是一个经典套路吧。

http://www.gsyq.cn/news/35191.html

相关文章:

  • Flask 入门:轻量级 Python Web 框架的快速上手 - 指南
  • OceanBase系列---【oceanbase的oracle模式新增分区表】
  • Bettercap(中间人攻击神器)
  • 模块-文本
  • 偏微分方程数值解
  • 进销存软件和ERP是包含关系吗?
  • jenkins 权限控制(用户只能看指定的项目)
  • [Programming Tips]Teach Yourself Programming in Ten Years by Peter Norvig
  • 世界上最牛逼的人—黄景行
  • 非计算机专业,保姆级申请软著教程
  • 2025年功效型洗发水品牌推荐榜:二硫化硒去屑洗发水/香氛洗发水/控油蓬松洗发水/MASIL玛丝兰以科技适配多元洗护需求​
  • Python字典 _ 创个秒查流行语的词典
  • B3612 【深进1.例1】求区间和
  • 2025氮化硼陶瓷/高温绝缘体/坩埚/套管/基板/高温构件/耐腐蚀构件厂家综合推荐榜:福维科新材料以全产业链布局与高性能材料引领行业创新
  • Mac版Color Folder v3.8安装教程(附dmg文件安装步骤和搜索关键词)
  • hook 工具随笔
  • 堆和栈的生命周期对于代码的影响
  • pgsql索引冗余分析
  • 详细介绍:Leetcode 3700. Number of ZigZag Arrays II
  • 老旧环境torch版本(0.4.1)环境配置总结
  • 代码大全阅读笔记3
  • 通过中国信通院SQL质量管理最高等级评测,天翼云TeleDB引领数据库管理新标准!
  • 代码大阅读笔记
  • 第二次软件基础作业
  • 实用指南:从0死磕全栈之Next.js Server Actions 入门实战:在服务端安全执行逻辑,告别 API 路由!
  • 重塑生产力:天翼云全球首发RaaS,开启“机器人即服务”商业时代!
  • Sequence2Sequence - -一叶知秋
  • 第177天:信息收集篇自动项目本机导出外部打点域内通讯PillagerBloodHound
  • 如何在Linux中,为Flatpak版本的Edge浏览器导入证书
  • Java 集合 “Map(1)”面试清单(含超通俗生活案例与深度理解) - 教程