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] \not = k: 取两颗子树中 mx[]mx[] 较小的当 左子树 ,
  • 有一个儿子,
    • mn[k]=mn[lt]:mn[k]= mn[lt]: ltlt左子树 .
    • mn[k]mn[lt]:mn[k] \not = mn[lt]: ltlt右子树 .

\color{red}{实现部分}

咕咕咕 .

posted @ 2019-10-02 23:39  XXX_Zbr  阅读(103)  评论(0编辑  收藏  举报