首页 > 其他分享 >题解【CF1307F Cow and Vacation】

题解【CF1307F Cow and Vacation】

时间:2022-09-22 10:48:06浏览次数:85  
标签:连通 dist Cow 题解 texttt Vacation frac 考虑 operatorname

感觉 CF*3300 的难度没有这么简单吧(

题目传送门

考虑 \(\texttt{Bessie}\) 运动的过程:起点 \(\to\) 休息点 $\to $ \(\cdots\) \(\to\) 休息点 \(\to\) 终点。

考虑我们把能相互到达的点放到一个连通块,那么问题就变得简单。

我们对于每一个休息点开始 \(\text{bfs}\),注意,每个休息点可控制的范围是 \(\frac{k}{2}\) 而非 \(k\),然后用并查集维护这个连通块。

考虑询问操作:

  • 对于询问的两点 \(a,b\),若 \(\operatorname{dist}(a,b)\le k\),那么这是可行的。

  • 若 \(a,b\) 在同一个连通块里,那么也是可行的。

  • 我们考虑将 \(a\) 和 \(b\) 分别沿着 \(a\to b\) 这条路径向上走 \(\frac{k}{2}\) 个点,看看能不能走到一个连通块里。

这个东西的实现可以考虑倍增去跳,如果跳着跳着超出了 \(\texttt{LCA}\),那么往另一半跳。

往另一半跳的过程不好维护,因为是祖先跳到儿子,设 \(\texttt{LCA}\) 为 \(c\),考虑超出的距离为 \(k-\operatorname{dist}(a,c)\),这个东西可以表示成 \(b\) 往上跳 \(\operatorname{dist}(b,c)-\left(k-\operatorname{dist}(a,c)\right)\) 步,也就是 \(b\) 向上跳 \(\operatorname{dist}(a,b)-k\) 步到达的点。倍增即可。

注意半径为 \(\frac{k}{2}\) 不好处理,我们可以在每条边间插一个点,这样将 \(k\leftarrow k\times 2\) 即可。

时间复杂度 \(\Theta(n\log n)\)。

代码比较人性化

标签:连通,dist,Cow,题解,texttt,Vacation,frac,考虑,operatorname
From: https://www.cnblogs.com/UperFicial/p/16718355.html

相关文章

  • 2 つの山札题解
    题目链接题意简述:给定两个长度为\(n\)的排列\(A\)和\(B\),按照一下方式生成一个长度为\(2n-2\)的序列:你对每一个排列分别做\(n-1\)次操作,每一次选择一个序列进行......
  • 题解 P7839 「Wdoi-3」夜雀 singing (思路非常好的一道题)
    代码细节非常多的一道题。这里只说思想了先。首先,找到那些安全树。所有的乌鸦最后一定会到达某一棵安全树上。因此,对于每只乌鸦,分别向左和向右暴力寻找,看是否可到达安全......
  • FCKEditor粘贴word图片问题解决
    ​ 当前功能基于PHP,其它语言流程大致相同 1.新增上传wordjson配置在ueditor\php\config.json中新增如下配置:     /* 上传word配置 */    "wordAction......
  • IDE//VS//VS2017,VS2019没有代码提示的问题解决
    IDE//VS//VS2017,VS2019没有代码提示的问题解决小小菜鸡于2022-07-2815:24:44发布235 收藏文章标签:idec++visualstudio版权开始菜单-->所有程序–>VisualStudi......
  • 牛客题解 卡牌游戏
    链接:https://ac.nowcoder.com/acm/problem/19777来源:牛客网题解作者岛田小雅在这里先贴一下OIWiki上期望的定义。根据期望的定义和题意,我们可以这样去思考这道高......
  • Mac系统用Maven本地引入jar包报错问题解决
    打包命令mvninstall:install-file-Dfile=/Users/用户名/tool/selenium-server-standalone-3.9.1.jar-DgroupId=org.selenium-DartifactId=selenium-server-standalone......
  • CSP-S模拟6 题解
    开个坑,今后我要写题解了!A.玩水挺有趣的一道题,我们首先从\(2\)条路径的情况考虑符合答案的路径一定满足这种格式:两条路径先重合,再分开,最后再重合观察一下,注意到第一......
  • CF1720E Misha and Paintings 题解
    神仙2700。首先统计出原数组中不同元素个数记作\(cnt\),如果\(cnt\lek\)说明元素个数不够,由于一次只能加一个颜色因此答案就是\(k-cnt\)。然后接下来要证明一个结论......
  • Codeforces Round #821(Div.2) (A-C) 题解
    CodeforcesRound#821(Div.2)(A-C)  A.ConsecutiveSum大致题意给定一组共n个数据,如果俩个数的下标在modk意义下同余,则可以交换a[I]和a[j] ,求操作后一段......
  • Luogu T273083 新的题目 题解
    怕放洛谷有人看,就搬过来了。本题解提供一个\(O(qn)\)的做法(实际上是暴力的优化)。先考虑暴力求解。对于每个操作,要求代价\(W\times(\sum_{i\inX}^{i}w[i]\times......