首页 > 其他分享 >题解【CF1632E1 Distance Tree (easy version)】

题解【CF1632E1 Distance Tree (easy version)】

时间:2022-09-29 12:11:06浏览次数:81  
标签:Distance lceil le 题解 Tree dfrac rceil operatorname dis

CF1632E1 Distance Tree (easy version & hard version)
解题报告。
不一定更好的阅读体验

E2 没有地方交了所以就交到 E1 了。

震撼挺大的一道题,钦定 \(1\) 为根。

先把 \(x\) 固定下来,连边的一个端点必定为 \(1\) 号点,这样能影响的路径长度最大。

那么现在问题变成,连一条 \(1\to u\) 的边,使得 \(\max(d_v)\) 尽量小。

后面那个完全可以二分一手,设 \(\max(d_u)\le L\),那么问题变成,是否存在一个 \(u\),使得添加一条 \(1\to u\) 的边后,\(\max(d_v)\le L\)。

在添加边之前,\(d_v\le L\) 的边不用考虑,只需要考虑 \(\max(d_v)>L\) 的边。

添加 \(1\to u\) 这条边后,影响的是 \(u\) 子树内的点,所以考虑一个 \(u\) 子树内的点 \(v\),\(d_v\) 变化为 \(x+\operatorname{dis}(u,v)\)。

把这个带入二分答案的式子,可以得到 \(x+\operatorname{dis}(u,v)\le L\),即 \(\operatorname{dis}(u,v)\le L-x\),不等式右边可看做常数项,这个不等式成立的条件可看做最远两个点的成立,那么所有点都成立。

所以问题又转化为,添加一条 \(1\to u\) 的边后,\(\max_{1\le v\le n}\{\operatorname{dis}(u,v)\}\) 最小是多少。

推到这个问题时我就不会做了,菜逼。当然你把相应的点拉出来建虚树 E1 就做完了。

下面继续考虑 \(\Theta(1)\) check 这个问题,也就是 E2 做法。

这个其实也很好做,考虑两个点 \(a,b\) 满足 \(d_a>L\land d_b>L\),且 \(a,b\) 距离 \(D\) 尽可能的大。

那么我们直接将 \(u\) 放到 \(a,b\) 的中点上,然后检查路径长度 \(x+\lceil\dfrac{D}{2}\rceil\) 是否 \(\le L\),即 \(\lceil\dfrac{D}{2}\rceil\le L-x\)。

这个的正确性很好证明。

采用反证法,假设存在一个点 \(v\) 使得 \(\operatorname{dis}(1,v)>L\),也就是 \(\operatorname{dis}(u,v)>L-x\ge \lceil\dfrac{D}{2}\rceil\)。

考虑这个式子的实际意义,即,当以 \(u\) 为根时,\(\operatorname{dis}(a,v)=\operatorname{dis}(u,a)+\operatorname{dis}(u,v)>\lceil\dfrac{D}{2}\rceil+\lceil\dfrac{D}{2}\rceil+1\ge D\),矛盾。

代码实现方面,我们对于二分的 \(L\),预处理出 \(f_i\) 表示 \(d_j>i\) 的点集距离最大的两点距离,这个倒推做可以做到 \(\Theta(n)\)。

最终复杂度 \(\Theta(n\log n)\)。

标签:Distance,lceil,le,题解,Tree,dfrac,rceil,operatorname,dis
From: https://www.cnblogs.com/UperFicial/p/16741006.html

相关文章

  • Gitee + Sourcetree 设置公钥SSH
    设置前提安装Git Git下载安装sourceTree sourceTree下载gitee账号 gitee官网Git设置公钥1.在安装好sourcetree后点击操作选择在终端中打开  2.输入配置......
  • 数据库复制订阅问题解决脚本
    --查列表select*frommsdb.dbo.MSdistpublishersDELETEFROMmsdb.dbo.MSdistpublishersselect*frommsdb.dbo.MSdistpublishers--增加execsp_droplinkedsrvl......
  • 哥大周赛题目 0-1 Tree (BFS + 并查集)
    上周本地比赛,老wf选手都退役了,只剩我们这些22届本科升研究生来参赛了题目不是很难,11题,比之前的训练赛要简单很多,开场A了4题签到+1裸dp+1做过+1xjb乱搞。结果最后一......
  • 【题解】P3225 [HNOI2012]矿场搭建(割点,dfs)
    【题解】P3225[HNOI2012]矿场搭建割点好题!(因为刚开始没想清楚卡了好久/kk)题目链接P3225[HNOI2012]矿场搭建题意概述给定一张\(n\)条边的无向图,现在要求在其中一......
  • CF1182E 名字太长不想打 题解
    题解区都是用矩阵直接算封闭形式中\(f_1,f_2,f_3\)的系数的,这里给个更偏MO风格的做法。首先先想办法用\(f_x\cdotk(x)\)代\(f_x\)以消掉\(c^{2x+6}\)这个不好......
  • 【Python】【爬虫】【问题解决方案记录】调试输出存在数据,print在控制台确丢失数据
    如下图,调试可以看到数据是完整的但是print输出的,恰好丢失了中间的一大堆数据。对,下图打问号的地方应该是小说才对。看代码可能看不出缺失内容,可视化看看对吧,......
  • Mac M1 安装 Nacos 操作及问题解决
    nacos依赖mysql先安装mysql,这里使用的是8+版本,原因在于原本的5.7版本中并没有对m1的良好支持,如果启动会有报错说查询不到对应版本信息(虽然可以通过自定义mirror......
  • USACO 2022赛季 简要题解
    DECGOLD-A-PairedUpG有\(n\)只奶牛,第\(i\)只在位置\(x_i\),有重量\(y_i\)。求在满足匹配要求的情况下,非匹配的奶牛的重量之和的最大/最小值。两只奶牛能......
  • npm ERR! ERESOLVE unable to resolve dependency tree
      处理办法npmi--legacy-peer-depsnpmieslint-plugin-vue xnull一键下载......
  • 【CF468D】 Tree
    CF468DTree以树的重心为根i和pi不能在同一个子树中贪心求出方案点击查看代码</details>#include<set>#include<stdio.h>#include<string.h>#include<alg......