zoukankan      html  css  js  c++  java
  • 首都城市

    不那么套路的点分题。
    首先根据题意容易得到一个(O(n^2))的做法。
    显然我们对于一个解,它的最优答案是内部的色数。
    一个解合法的条件是它的外部不包含这个解内部的颜色。
    那么我们可以暴力模拟这个过程。强制钦定一种颜色被选择,然后把这种颜色包含的所有点都加入解中,重复此过程直到解合法。
    遍历一个颜色的链并可以从为当前颜色的所有点跳父亲。
    考虑点分。根据上面的思想,就像点分治处理跨过路径的询问一样,强制钦定一个解在深度在dfs点分树的过程中第一次到的位置被选择。
    然后使用上面的bfs做法。
    注意到对于每种颜色的一个节点x,我们可以跳父亲到它第一个被访问过的点,然后break掉。
    这是因为它的父亲如果被访问过,则它的父亲也可以更新它接下来会更新的点(比较绕)
    这样子就能在(O(n))的时间内算出强制包含重心的解了。
    时间复杂度(O(nlog_2n))

  • 相关阅读:
    Oracle ASH报告生成和性能分析
    Oracle AWR报告生成和性能分析
    oracle和mysql批量合并对比
    Oracle
    Delphi
    Delphi
    Delphi
    Delphi
    Delphi
    Delphi
  • 原文地址:https://www.cnblogs.com/ctmlpfs/p/13831487.html
Copyright © 2011-2022 走看看