首页 > 其他分享 >CF375E Red and Black Tree

CF375E Red and Black Tree

时间:2023-10-28 12:12:46浏览次数:24  
标签:子树内 记录 黑点 位于 Tree Black CF375E 节点 dp

看错题看成只能交换相邻节点颜色了/fn

每次操作交换两个节点颜色,可以转化为统计最终合法颜色序列相比开始,最少有多少个红点变成黑点。

可以考虑一个类似树形 dp 的过程,对于每个节点我们钦定下它会被哪个节点“笼罩”,同时由于黑点数量有限,我们还需要记录下子树内已经用了多少个黑点。

设“笼罩”节点 \(u\) 的节点为 \(f_u\),我们不妨对 \(f_u\) 进行讨论:

  • 若 \(f_u\) 位于 \(u\) 的子树 \(v\) 内,则 \(f_v\) 一定等于 \(f_u\),否则将二者取等一定会变得不劣。此时 \(f_u\) 的贡献可以位于在 \(f_u\) 节点时记录,此时当点 \(f_u\) 为黑点时贡献为 \(0\),否则为 \(1\)。
  • 若 \(f_u\) 位于 \(u\) 的祖先,则我们可以通过不断上传使得贡献在祖先 \(f_u\) 处被记录。
  • 若 \(f_u\) 既不是 \(u\) 的祖先也不在 \(u\) 子树内,我们可以通过不断上传,与 \(lca(f_u,u)\) 合并,此时 \(f_{lca(f_u,u)}\) 也一定等于 \(f_u\),贡献同样会在 \(f_u\) 处被记录。

故我们设 \(dp_{u,i,j}\) 表示 \(u\) 子树内共用 \(i\) 个黑点,且 \(u\) 被 \(j\) 覆盖的最小代价,则当子树 \(dp_{v,p,q}\) 转移时:

  • 若 \(q=j\),\(dp_{u,i+p,j} \leftarrow dp_{v,p,q}+dp_{u,i,j}\)。

  • 若 \(q\neq j\),\(dp_{u,i+p,j}\leftarrow dp_{u,i,j}+w\),其中 \(w\) 表示 \(\min(dp_{v,p,q})\)。需要满足 \(j\) 位于 \(v\) 子树外,\(q\) 位于 \(v\) 子树内,否则像上面说的,一定可以通过调整使其变得不劣。如此便可保证转移的复杂度为 \(O(n^3)\)。

初始 \(dp_{u,1,u}=1-a_u\),\(dp_{u,0,v}=0\)。

需要 short 卡空间。

标签:子树内,记录,黑点,位于,Tree,Black,CF375E,节点,dp
From: https://www.cnblogs.com/ydtz/p/17793938.html

相关文章

  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(5) -- 树列表
    在我们展示一些参考信息的时候,有所会用树形列表来展示结构信息,如对于有父子关系的多层级部门机构,以及一些常用如字典大类节点,也都可以利用树形列表的方式进行展示,本篇随笔介绍基于WPF的方式,使用TreeView来洗实现结构信息的展示,以及对它的菜单进行的设置、过滤查询等功能的实现逻辑......
  • A Tour Through TREE_RCU's Data Structures (翻译)
    原文:https://www.kernel.org/doc/html/latest/RCU/Design/Data-Structures/Data-Structures.htmlDecember18,2016ThisarticlewascontributedbyPaulE.McKenneyIntroductionThisdocumentdescribesRCU'smajordatastructuresandtheirrelationshiptoea......
  • AtCoder Regular Contest 164 F Subtree Reversi
    洛谷传送门AtCoder传送门非常好题目。发现每个点颜色被反转的次数是固定的,为其深度(根结点深度为\(0\))。于是可以看作是,一放棋子就得到分数。那么先手取偶数层和后手取奇数层都会使先手得分,所以双方的目标都是尽可能多取偶数层的结点。考虑若一开始有偶数层的叶子,那么当前的......
  • CF868E Policeman and a Tree
    感觉,好自然啊!想法dp,想办法分解这个博弈的过程。发现警察会从一片叶子到另一片叶子,在叶子抓住小偷时所有小偷可以全树乱走。因此dp:\(f_{u,i}\)表示警察位于\(u\),全树剩余\(i\)个小偷时的答案。因为两边都绝对理性,小偷在警察离开叶子后不会移动并位于多片叶子上。考虑小偷......
  • P6109 [Ynoi2009] rprmq1 题解-猫树+Segment Tree Beats
    20231025P6109[Ynoi2009]rprmq1题解-猫树+SegmentTreeBeats不愧是学长出的题。。。让我更深刻地理解了猫树。Statement传送门有一个\(n\timesn\)的矩阵\(a\),初始全是\(0\),有\(m\)次修改操作和\(q\)次查询操作,先进行所有修改操作,然后进行所有查询操作。一次修......
  • 75th 2023/10/6 k-D Tree
    附上一图:按维度分级,每次轮换用哪个维度即可oi中大多为2维这就是我对它的全部理解了结构与线段树几乎相同分左右结点时取当前区间段的中位数因而每一个节点都不同于线段树的表示范围它表示的是一个确确实实的节点的值访问前可以维护一个节点及它的子树的维度上下界以减少询......
  • CF1572F Stations 题解-Segment Tree Beats
    20231025CF1572FStations题解-SegmentTreeBeats吉司机线段树好题!!!CF3400。传送门Statement有\(n\)个广播站,第\(i\)个广播站高度为\(h_i\),范围为\(w_i\)。初始\(h_i=0,w_i=i\)。广播站\(i\)能向广播站\(j\)传递消息,当且仅当\(i\lej\lew_i\),且\(h_i>\max\lim......
  • CF1467E Distinctive Roots in a Tree
    突然发现深究一些树上问题还是挺有意思的哈。显然对于同一种权值的任意两个结点,其两端的部分都是不合法的。维护两个标记表示子树内均不合法与子树外均不合法即可。但相同权值的点对数量是\(O(n^2)\)的,我们要优化这个过程。发现很多点对都是无用的。DFS下去,遇到一个\(x\)......
  • Jquery 下拉树下面是一个使用Combotree组件的简单案例:
    1、html <!DOCTYPEhtml><html><head><title>Combotree使用案例</title><linkrel="stylesheet"type="text/css"href="https://cdn.jsdelivr.net/npm/jquery-combotree/dist/jquery.combotree.min.css"......
  • gitee与SourceTree的安装使用
    git可视化管理工具SourceTree安装教程:http://wed.xjx100.cn/news/174839.html?action=onClickgitee可视化管理工具SourceTree安装使用教程:https://blog.csdn.net/wan369282913/article/details/131858067这两篇文章结合着看,第一步下载git,第二步下载sourcetree,第三步用git生成公钥......