#P17000. [NWERC 2019] Balanced Cut

    ID: 19288 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>动态规划 DP贪心2019Special JudgeICPCAd-hoc

[NWERC 2019] Balanced Cut

背景

译自 Northwestern Europe Regional Contest (NWERC) 2019

题目描述

Anna van Lier 教授正在准备一节关于平衡二叉搜索树的课。回忆一下,平衡二叉搜索树具有两个性质:

  • 平衡树: 对每个结点,其左子树高度和右子树高度之差至多为 11。例如在下图中,结点 77 的左、右子树高度分别为 2211。如果一个结点没有左子树或右子树,则对应子树的高度视为 00
  • 搜索树: 每个结点有一个值。某个结点的值大于其左子树中的所有值,并且小于其右子树中的所有值。例如在下图中,结点 77 的左子树包含值 4,5,64,5,6,它们都小于 77

Anna 从同事那里得到了一张这样的树的图。这棵树有 nn 个结点,结点值为 11nn。但是这棵树太大了,无法放进她的幻灯片中,所以她想把它变小。

具体来说,她想从树中擦除一些结点,使得最后恰好剩下 kk 个结点。每当她擦除一个结点时,也会一并擦除该结点的所有子树。当然,得到的树仍然必须是一棵平衡二叉搜索树。

出于教学目的,Anna 希望最终树中的结点值尽量小。因此,她希望剩下的 kk 个结点值组成的列表按字典序尽可能小。例如,与包含值 2,6,72,6,7 的树相比,她更喜欢包含值 2,5,92,5,9 的树。

Anna 忙于处理更重要的事情,因此寻找应该擦除哪些结点的任务就交给了她的助教,也就是你。

:::align{center}

:::

输入格式

输入包含:

  • 第一行包含两个整数 nnkk (2n51052 \le n \le 5\cdot 10^5, 1kn11 \le k \le n-1),分别表示树中结点数和需要保留的结点数。
  • 接下来 nn 行,第 ii 行包含一个整数 pip_i (1pin1\le p_i\le npi=1p_i=-1),表示值为 ii 的结点的父亲;若值为 ii 的结点是根,则 pi=1p_i=-1

保证给定的树是一棵平衡二叉搜索树。

输出格式

输出一行长度为 nn 的二进制字符串。第 ii 个字符应为 1,当且仅当值为 ii 的结点应被保留;否则应为 0

3 1
2
-1
2
010
8 5
3
1
-1
5
7
5
3
7
11101010

提示

【数据规模与约定】

  • 2n51052 \le n \le 5\cdot 10^5
  • 1kn11 \le k \le n-1
  • 对每个结点,1pin1\le p_i\le npi=1p_i=-1
  • 给定的树保证是一棵平衡二叉搜索树。