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

CF2152G

有一棵以 \(1\) 为根, \(n\) 个节点的树,每个节点有一个颜色白/黑。给定 \(q\) 组询问,每组询问给了一个 \(u\),表示将 \(u\) 子树内的点的颜色全部翻转。每次操作后回答至少需要几条从根开始的链才能覆盖所有黑点覆盖。

先来转化一下问题,题目问的其实就是有多少个节点 \(u\) 满足 \(u\) 为黑点且 \(u\) 的子树内没有其他黑点。

\(u\) 的子树在 dfs 序上对应 \([dfn_u, bk_u]\)\(nxt_u\) 表示 \(u\)dfs 序上后面第一个黑点的位置,\(co_u\) 表示 \(u\) 的颜色。答案就是满足 \(co_u = 1, nxt_u > bk_u\)\(u\) 的数量。

这就可以用线段树维护了,线段树维护 dfs 序上 \([l, r]\) 这些点里最靠左的黑点,最靠右的黑点以及满足要求的 \(u\) 的数量。合并时只有左半区间最靠右的黑点可能从满足变成不满足,减一下即可。

struct SegTree {int l, r, c; // 最靠左、靠右的黑点,满足条件的黑点数。
} tr[2][MAXN * 4];void Pushup(SegTree *tr, int u, int l, int r) {tr[u] = {(tr[l].l ? tr[l].l : tr[r].l), (tr[r].r ? tr[r].r : tr[l].r), tr[l].c + tr[r].c};tr[u].c -= (tr[l].r && tr[r].l && tr[r].l <= bk[vis[tr[l].r]]); // 减去 tr[l].r 不合法的情况。
}

再考虑翻转,我们对白点也做同样的事情,碰到被 \([dfn_u, bk_u]\) 包含的区间 swap 一下白点和黑点的信息即可。

时间复杂度:\(O(n + q\log n)\)

主要是把题目条件转化成可以用线段树维护形式就可以了。

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

相关文章:

  • 染色法判定二分图 (dfs算法)
  • 链式前向星建图与搜索
  • 一般图最大匹配
  • 平面图最短路(对偶图)
  • 多源汇最短路(APSP问题)
  • 最小生成树(MST问题)
  • 缩点(Tarjan 算法)
  • 常见概念
  • 单源最短路径(SSSP问题)
  • CNCF项目记录2025-10
  • 关于 vue项目 代理的坑;baseURL必须为空;代理才会生效
  • 点分治 / 树的重心
  • 最近公共祖先 LCA
  • QMPlayer2中的类,数据结构
  • QMPlayer2解析
  • 2025年10月广州单位办公室搬家公司全景解析报告,基于专业测评的技术、性能及市场优势深度分析
  • 附加数据文件失败:操作系统错误 5:“5(拒绝访问。)”。 CREATE DATABASE 失败。无法创建列出的某些文件名
  • 书评-谋杀黄昏
  • 20251024- 使用shell脚本分库定时备份MySQL数据
  • 权威调研榜单:东莞工厂装修公司OP3榜单好评深度解析
  • 徐州信息技术服务管理体系认证渠道口碑榜:聚焦机构资质、服务案例及合规性评估
  • 2025年口碑好的FPC离型纸,环氧胶离型纸推荐TOP生产厂家
  • 2025年口碑好的数字地磅,电子汽车衡地磅厂家推荐及选择建议
  • 二分
  • 权威调研榜单:四氟换热器生产厂家TOP3榜单好评深度解析
  • 2025年热门的魔方智能柜,黑金刚智能柜厂家推荐及选择指南
  • 2025年10月扬州公考面试机构全景解析报告,基于专业测评的技术、性能及市场优势深度分析
  • 2025年口碑好的空气能地暖管,德国品牌地暖管厂家最新TOP推荐榜
  • 2025 年企业邮箱供应商品牌最新推荐榜,聚焦技术实力与市场口碑深度解析
  • 2025年上海注册公司/上海代理记账公司最新推荐榜,聚焦企业服务品质与特色业务竞争力深度剖析