#P13810. [cf20117 final]Full Tournament

    ID: 13011 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 8 上传者: 标签>CF2500构造贪心状压DP数学排序分治递归

[cf20117 final]Full Tournament

题目描述

2N2^N 名选手进行了一场锦标赛。每位选手都有 112N2^N 的编号,当两名选手对战时,编号较小的选手一定获胜。

本次锦标赛有些不同,失败者之间也会进行比赛,从而确定所有选手的最终排名。

在这里,我们将这样的 2n2^n 人比赛称为“等级为 nn 的全锦标赛”。等级为 nn 的全锦标赛的排名按照如下规则决定:

  • 等级为 00 的全锦标赛只有 11 名参与者,该选手获得第 11 名。
  • 等级为 n (1n)n\ (1 \leq n) 的全锦标赛,从 2n2^n 名选手按顺序排成一行开始,排名的决定方式如下:
    • 首先,从一端开始,每两人分为一组,得到 2n12^{n-1} 组,每组 22 人。
    • 每组进行对战,获胜者进入胜者组,失败者进入败者组。
    • 将胜者组内的选手按原排列顺序重新排队,以此进行等级为 n1n-1 的全锦标赛,决定他们的排名。
    • 败者组也同样排序,但在他们的每个排名基础上加上 2n12^{n-1}

例如,将 88 名选手按 3,4,8,6,2,1,7,53,4,8,6,2,1,7,5 的顺序进行等级为 33 的全锦标赛。比赛如图所示,最终按名次排列后的顺序为 1,3,5,6,2,4,7,81,3,5,6,2,4,7,8

e93269f0dfb68bcdff175a3b634ab0d8.png

高桥君手中有一张记录着选手编号按锦标赛最终名次排列的纸条,但有些地方被弄脏无法辨认。现在给定这张纸的信息为长度为 2N2^N 的数列 AA,当 Ai1A_i \geq 1 时,表示第 ii 名选手的编号为 AiA_i,当 Ai=0A_i = 0 时,表示第 ii 名选手的编号已不可辨认。

请判断是否存在一种初始选手排列顺序,通过这样的锦标赛最终结果能得到给定的名次序列 AA。如果存在,请给出一种可能的初始排列。

输入格式

输入以如下格式通过标准输入给出。

NN A1A_1 A2A_2 \cdots A2NA_{2^N}

输出格式

如果存在一种初始的选手排列顺序能够得到给定的名次序列,则输出 YES,第二行输出一种符合要求的初始排列,选手编号按顺序以空格分隔。
如果不存在,则输出 NO

输入输出样例 #1

输入 #1

3
0 3 0 6 0 0 0 8

输出 #1

YES
3 4 8 6 2 1 7 5

输入输出样例 #2

输入 #2

1
2 1

输出 #2

NO

说明/提示

限制

  • 1N181 \leq N \leq 18
  • 0Ai2N0 \leq A_i \leq 2^N
  • 00 外,AiA_i 中的整数不会重复出现。

样例解释 1

与题目描述中的例子排列顺序相同。

由 ChatGPT 5 翻译