• 【树形DP】NOI2003 逃学的小孩


    题目大意

    题目链接

    PS:可能出题人为了提高难度故意加了很多废话……实际上题目是很简单的

    在一棵树上找3个点A、B、C,使AB+BC最大,且满足AC>AB。

    样例输入

    4 3
    1 2 1
    2 3 1
    3 4 1

    样例输出

    4

    思路

    从一个点出发,找到两条路径,使路径和最大,那么肯定其中一条是树的直径。

    设AB是树的直径,剩下直接枚举,找到一个离直径端点最远的C点。

    (A、B、C只是个符号而已,可以随便互换的)

    不过还有一个条件是AC>AB,所以枚举的时候,选AC和BC里小的作为第二条路径。

    比如AC大,就选BC,此时的路径就是B→A→C,满足AC>AB。

    这样此题就完成了,先找出直径,再对直径起点和终点跑出对每个点的路径长度,然后计算答案。

  • 相关阅读:
    ISP基础(01):ISP模块列表
    Linux 开发(02):打印特殊含义转义符
    note template
    apply、call、bind的区别
    Fiddle 抓包工具
    post和get的使用场景和区别
    闭包
    原型链
    node.js
    CSS垂直居中
  • 原文地址:https://www.cnblogs.com/Midoria7/p/12659638.html
Copyright © 2020-2023  润新知