zoukankan      html  css  js  c++  java
  • P3629 【[APIO2010]巡逻】

    今天在机房里考了这题。。。。。lbw巨佬一下考场就开始大喊“第二题把直径赋为-1再跑一次直径就行”,作为一个蒟蒻也没有啥好说的,自己弱,没办法。 下午再想这道题,忽然有个暴力的想法。

    首先,加一条边就会使一条链(就是这条边连接的两点形成的链)上的边只用被走一遍。(这很显然)

    所以,令dp[i][j]表示i节点状态为j的所有因为连边而只需要走一遍的链的最大长度。

    那么我们把所有因为连边而只需要走一遍的边从树里挑出来,只可能有几种状态:

    1.一条经过i节点的链。

    2.一条不经过i节点的链。

    3.一条以i节点为一个端点的链。

    4.两条链,一条链的一个端点为i节点,另外一条不经过i节点。

    5.两条链,都不经过i节点。

    6.两条链,一条链的一个端点为i节点,另外一条经过i节点。

    7.两条链,都经过i节点。

    (个人感觉上面这些状态应该还有可以再合并的)

    然后互相转移一下就行了.

    复杂度O(n*常数)

    常数的上界应该是50吧(如果这7种状态都有效且都能互相转移的话)。

    反正能过。

  • 相关阅读:
    网页页面合适的大小
    Spring IO Platform简介及示例
    Spring Boot 单元测试详解+实战教程
    Spring Boot日志集成
    Spring Boot 16 条最佳实践
    Spring Boot自动配置原理、实战
    Spring Boot自动配置
    Windows10 IME占用过高临时解决办法
    GitLab版本管理
    大型系统重构的步骤梳理
  • 原文地址:https://www.cnblogs.com/thedreammaker/p/10986454.html
Copyright © 2011-2022 走看看