首页 > 其他分享 >[ARC108F] Paint Tree

[ARC108F] Paint Tree

时间:2025-01-17 20:31:50浏览次数:1  
标签:ARC108F 颜色 Tree 距离 Paint 答案 rm 直径 dis

前言

复习什么的就留到下周了, 顺便把格式调好

现在把每日一练打了差不多

今天补了一下午的 \(\rm{T2}\) , 终于还是被码力问题击碎了, 不过也还好

这道题是模拟赛 \(\rm{T3}\)

吉司机线段树和左偏树都只能明天搞了, 明天把 \(\rm{C}\) 打了开摆

思路

首先那几个 \(\rm{subtask}\) 都没有 \(\rm{T2}\) 难, 就不管了

然后就是正解思路

首先, 这种题一般要根据答案算方案数
所以我们考虑计算答案等于 \(d\) 的方案数, 至少要求出对于任意一个点, 离他的距离 \(> d\) 的点的位置

解决方法如下


先求出一条直径, 若直径的两个端点颜色相同, 则最长距离一定为直径
否则, 令两个端点分别为 \(x,y\) , 并钦定 \(x, y\) 不同色
枚举答案 \(d\) , 所有到 \(x\) 距离 \(>d\) 的点颜色必须与 $ y$ 一样, 所有到 $ y$ 距离 $ > d$ 的点颜色必须和 $ x$ 一样

考虑证明为什么要取直径的两个端点
由于 $ x, y$ 是直径的两个端点, 可以发现, 若一个点 $ z$ 到 $ x, y$ 的距离都不超过 $ d$ , 则其到任何一个点的距离不超过 $ d$ , 所以 $ z$ 的颜色并不会对答案产生影响

所以, 定义 $ cnt_i$ 表示到直径两端的距离不超过 $ i$ 的点数 , 定义 $ f_d$ 表示答案不超过 $ d$ 的树的形态数, $ g_d$ 表示答案为 $ d$ 的树的形态数, $ dis_{1/2}$ 表示从直径的两端点出发到其他点的距离
定义 $ L=\max (\min(dis1_i,dis2_i))$ 的意义为, 在所有形态的树中, 最小的答案(同色点对最大距离) , 对于每个点取到直径两端点近的那个颜色即可

最终的总权值为 $ \displaystyle\sum\limits_{i=L}^S g_i\times i$

容易得到 $ f_d=2^{cnt_d}$
。但是我们想要答案等于 $ d$
的树的形态数 $ g_i$
。很明显, 只需要容斥减去 $ f_{d-1}$
即可, 也就是 $ g_d=f_d-f_{d-1}$

注意 $ x,y$
共有 $ 2$
种颜色分配方案。


我的理解是, 你要知道对于每个点, 到他的距离 \(> d\) 的点有哪些, 从而通过确定这个点的颜色来确定到他的距离 \(> d\) 的点的颜色, 像是一个连通块的样子
然后你发现一个点是没有用的, 仅当其到任何点的距离都 \(\leq d\) , 联想到直径

你发现确定一个点, 可以递归确定所有到某个点距离 \(> d\) 的点的颜色, 考虑怎么确定
你发现直径 \((x, y)\) 的一个性质
如果 \(dis(u, v) > d\) , 那么一定有 \(dis(u, x) > d\) 或者 \(dis(u, y) > d\) , \(dis(v, x) > d\) 或者 \(dis(v, y) > d\) , 其中 \(u, v\) 异色, 你发现对于两个有用的点, 如果不是异色一定是同色的

具体证明一下, 如果存在 \(dis(u, x) > d\) 且 \(dis(v, x) > d\) , 一定不存在染色, 所以不管这种情况, 还有 \(dis(u, y) > d\) 且 \(dis(v, y) > d\)
分成两种情况讨论

  • \(dis(u, x) > d, dis(v, y) > d\)
  • \(dis(u, y) > d, dis(v, x) > d\)

发现两种情况本质相同, 只是 \((u, v)\) 的顺序问题
我们只考虑 \(dis(u, x) > d, dis(v, y) > d\) , 也一定能考虑到所有点对 \((u, v)\)

分类讨论之后, 你确定 \(x\) 的颜色, 就可以确定所有 \(u\) 的颜色, 确定 \(y\) 的颜色, 就可以确定所有 \(v\) 的颜色, 还是很好做的

总结

树上距离最大的问题, 往往可以向直径的方向转化

巧妙地地方在, 利用了直径的好性质

这种异色约束, 考虑找性质「异异得正」

标签:ARC108F,颜色,Tree,距离,Paint,答案,rm,直径,dis
From: https://www.cnblogs.com/YzaCsp/p/18677633

相关文章

  • K-D tree学习笔记
    翻译过来就是维护k维信息的树,是一种可以高效处理k维空间信息的数据结构。一般在算法竞赛中,k=2的情况较多。考虑对于一维数组,我们想要找到一个y,使得对于给定的x,有|x-y|最小。那么不妨考虑二叉搜索树(就是二分法),取数组的中位数为根,构造一棵树,使得每个点的左儿子小于它,右儿子大于它......
  • 移除clock tree的don‘t touch属性
    我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?拾陆楼知识星球入口 为了让clocktree不被绕线或优化影响,我们会使用mark_clock_tree-dont_touch-freeze_routing,但是route阶段可能会产生全局范围内的绕线问题,集中出现在clocknet与signalnet相关绕线上。这里可以......
  • 在git上修改代码后发现master已经更新怎么办?(Sourcetree)
    首先把自己修改的代码提交到分支上,(此时提交推送后,去和master合并会产生冲突)那么如何解决这个master合并冲突呢?1.提交前,首先把master拉到最新状态2.然后基于master新建一个新的分支3.把修改代码的分支合并到新的分支上4.最后把这个新的分支提交并推送到远端,然后在去请......
  • 科普文:算法和数据结构系列【压缩和通信利器:哈夫曼树(Huffman Tree)java示例代码解读】
    概叙科普文:算法和数据结构系列【算法和数据结构概叙】-CSDN博客科普文:算法和数据结构系列【非线性数据结构:树Tree和堆Heap的原理、应用、以及java实现】-CSDN博客科普文:算法和数据结构系列【树:4叉树、N叉树】-CSDN博客科普文:算法和数据结构系列【二叉树总结-上篇:满二叉树、......
  • vue-easy-tree解决大量数据卡死问题 虚拟滚动
    //定义一个函数来遍历树形数据并设置节点的checked、半选和disabled状态setNodeStates(nodes,selectedIds){consttreeRef=this.$refs["from-tree"];//获取vue-easy-tree的引用if(treeRef){nodes.forEach(node=>{constisSelected......
  • 安装Unitree_sdk2
        unitree@ubuntu:~$unitree@ubuntu:~$unitree@ubuntu:~$unitree@ubuntu:~$unitree@ubuntu:~$unitree@ubuntu:~$unitree@ubuntu:~$unitree@ubuntu:~$unitree@ubuntu:~$cd/unitree/lib/unitree_slamunitree@ubuntu:/unitree/lib/unitree_slam$unit......
  • git worktree同一个仓库多个分支并行开发和管理
    介绍GitWorktree是Git提供的一个功能,允许你在同一个仓库中同时工作在多个工作目录中,每个目录都有自己的工作树和索引。这对于同时处理多个分支或版本非常有用。常用命令命令解释gitworktree--help查看命令帮助gitworktreelist[-v|--porcelain[-z]]列......
  • Mysql--重点篇--索引(索引分类,Hash和B-tree索引,聚簇和非聚簇索引,回表查询,覆盖索引,索引
    索引是数据库中用于加速查询操作的重要机制。通过索引,MySQL可以快速定位到满足查询条件的数据行,而不需要扫描整个表。合理的索引设计可以显著提高查询性能,但不合理的索引可能会导致性能下降和磁盘空间浪费。因此,理解索引的工作原理、类型以及如何优化索引非常重要。一、索......
  • F. 0, 1, 2, Tree!
    题目链接:Problem-1950F-Codeforces题目大意:给定三个整数,a,b,c。其中a是在一棵树上度为2的结点(既有左子树,右子树)的个数,b是度为1的结点的个数,c是叶子结点的个数。问这样的结点分布情况是否可以勾成一棵二叉树,如果可以,输出最小高度,不能输出-1。1<=a,b,c<=1e5,a+b+c>=1.......
  • [数据结构学习笔记11] 前序树(Trie/Prefix tree)
    前序树(Trie/Prefixtree),它的一个典型的应用场景在搜索引擎里,当你输入查询关键字的时候,会联想自动补齐你想要输入的内容。比如,你输入app,下面可能会出来联想Apple,Applied等等。什么是Trie?Trie(读作Try)是这样一个数据结构,它把短语或者单词分解字母,然后以一种方式去存储,让添加、删......