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

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

      这道题有两种方法。

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

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


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

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

  • 相关阅读:
    NOI 2016 区间 解题报告
    有关莫队
    [JSOI2008]最大数 线段树解法
    HDU P3341 Lost's revenge 题解+数据生成器
    BZOJ P1212 [HNOI2004] L语言
    洛谷P3168 [CQOI2015]任务查询系统
    普通平衡树Tyvj1728、luogu P3369 (splay)
    洛谷P3384 树链剖分
    BZOJ P2157 旅游
    【算法导论】第6章,堆排序
  • 原文地址:https://www.cnblogs.com/ezyzy/p/6519882.html
Copyright © 2011-2022 走看看