首页 > 其他分享 >P7215首都

P7215首都

时间:2023-09-17 10:13:03浏览次数:31  
标签:首都 路径 我们 城镇 P7215 节点

2023-09-14

题目

P7215 [JOISC2020] 首都

难度&重要性(1~10):8

题目来源

luogu

题目算法

点分治

解题思路

一个显然的 \(O(n^2)\) 的暴力思路。
因为这是一颗树,我们就每一次将城镇 \(1\sim n\) 定为根节点,将这个城镇的所属城市定为首都,而要求首都的其他城镇到根节点的路径上只有首都自己的城镇。可事实上路径中是会出现其他的城镇的,我们就需要将这个挡路的城镇的所属城市合并掉。在合并的同时我们也需要将被合并的城市的城镇同样纳入首都,继续维护。
这个过程看似很繁琐,有点绕,其实我们只需要一个队列用来维护需要判断路径的城镇就可以了。而它的时间复杂度也非常好证明,因为每一个城镇最多入队一次,而我们需要枚举的只有根节点,时间复杂度为 \(O(n^2)\)。
好了,暴力讲完了,我们来讲一讲正解。
我们发现,我们每一次需要维护城镇到根节点的路径,保证没有其他城市的城镇。那么按照暴力的思路,我们每次需要维护相同城镇中点对的路径。考虑贪心,当我们选定城市 \(i\) 为首都,则答案一定不劣在选定其他城市为首都时将城市 \(i\) 合并的答案。
这样我们用点分治就可以解决了。

完成状态

已完成

标签:首都,路径,我们,城镇,P7215,节点
From: https://www.cnblogs.com/OIerBoy/p/17702581.html

相关文章

  • 题解 P7215
    点分治。考虑当前的分治重心的城市被完全联通。这可以用队列接解决。每次放入一种城市,就把那些城镇的父亲加入队列,如果存在城镇不在当前分治重心的联通块内,那么说明必定存在另一个分治重心能算到它,直接退出即可。剩下的和模板没有任何区别。复杂度\(O(n\logn)\)。code:#in......
  • 各国首都
    各国首都国家名称首都中华人民共和国People'sRepublicofChina北京Beijing蒙古Mongolia乌兰巴托Elggydggmgj朝鲜DemocraticPeople'sRepublicofKorea平壤Pyongyang韩国RepublicofKorea首尔Seoul日本Japan东京Tokyo菲律宾Republic......
  • Terraform实践--腾讯云、首都云、VMware
    Terraform实践目录Terraform实践简介优势工作流程安装登录Terraform官网下载适用于你的操作系统的程序包Ubauntu/Debian安装Centos安装对接案例腾讯云参考文档:TencentCl......
  • 脑筋急转弯-2477. 到达首都的最少油耗
    问题描述给你一棵n个节点的树(一个无向、连通、无环图),每个节点表示一个城市,编号从0到n-1,且恰好有n-1条路。0是首都。给你一个二维整数数组roads,其中roads[......
  • 320场周赛 到达首都的最小油耗
    320场周赛到达首都的最小油耗给你一棵n 个节点的树(一个无向、连通、无环图),每个节点表示一个城市,编号从 0 到 n-1 ,且恰好有 n-1 条路。0 是首都。给你一个二......