zoukankan      html  css  js  c++  java
  • 2017 3 8 练习赛 t3 路径规划

      题目大意是让你在一棵树上找到一条路径使得(路径边权和*路径最小值) 最大。

      这道题有两种方法。

      1.点分治,考虑过重心的每条路径是否可能成为答案,枚举从根出发的每一条路径中的最小值等于总路径的最小值,那么选的另一条从根出发且不走同一棵子树的路径中的最小值必须大于等于这条路径的最小值,所以我们可以先把所有路径先找出来按最小值排个序,从大往小扫维护路径长度的最大和次大就可以直接做了。

      考试的时候想到了点分,但对点分的理解不够彻底,正常套路应该是找出所有从重心出发的路径然后合并两条路径,显然这道题是可以合并的,考试的时候总觉的要枚举一个起点找终点,最后还是写了个暴力,多好的一个AK机会。复杂度nlog^2.


      2.这道题正常想法显然应该是把边权排序从大往小加,每加进一条边就用过这条边的最长路更新答案,问题就是怎么找这个最长路。

        这个东西显然跟直径有关,我们平时找直径的时候有一种方法是dfs两遍我相信大家应该都会,那么说明我们从一个点dfs到的最远点一定是直径的一个端点,那不就好办了,对于每个联通块我们维护它直径的两个端点,那么我们合并直径只可能是原本的直径或A块里的一个端点到B块里的一个端点,分类讨论一下就好了。复杂度nlogn。

  • 相关阅读:
    Python3 session实现带密码访问网站后台
    Python3实现利用url请求百度翻译
    Python3 parse模块
    Python3 requests模块
    Nignx gzip 文件压缩
    Cnetos7 Yum安装Ningx
    喜极而泣,我终于学会了Nginx!
    Centos7 给磁盘创建Lvm虚拟盘
    Pyhton Tkinter图形工具(原创)
    nginx四种均衡策略
  • 原文地址:https://www.cnblogs.com/ezyzy/p/6519882.html
Copyright © 2011-2022 走看看