HDU6727 Quasi Binary Search Tree [贪心]

Quasi Binary Search TreeQuasi Binary Search Tree

题目描述见链接 .


color{red}{正解部分}

题目要求 字典序最小伪二叉树,
我们只需要在满足 一颗子树编号全部比根节点小, 另一颗子树编号全部比根节点大 的前提下 , 使得 序号越小的节点编号越小 即可 .

这个问题可以 分治 解决,
mn[k]mn[k] 表示 以 kk 为根的子树中最小序号为 kk, 当前可分配的编号区间为 [l,r][l, r], 当前根节点为 kk,

:分类讨论:

  • 有两个儿子,
    • mn[k]=k:mn[k] = k:
      • 两子树大小不等, 此时哪颗子树的 sizesize 小, 就取哪颗子树当 左子树.
      • 两子树大小相等, 此时比较两颗子树的 mn[]mn[], 取较小值当 左子树 .
    • mn[k]k:mn[k] ot = k: 取两颗子树中 mx[]mx[] 较小的当 左子树 ,
  • 有一个儿子,
    • mn[k]=mn[lt]:mn[k]= mn[lt]: ltlt左子树 .
    • mn[k]mn[lt]:mn[k] ot = mn[lt]: ltlt右子树 .

color{red}{实现部分}

咕咕咕 .

原文地址:https://www.cnblogs.com/zbr162/p/11822436.html