AT_cf17_final_i.Full Tournament

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

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

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

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

  • 等级为 00 的全锦标赛只有 11 名参与者,该选手获得第 11 名。
  • 等级为 n (1≤n)n\ (1 \leq n) 的全锦标赛,从 2n2^n 名选手按顺序排成一行开始,排名的决定方式如下:
    • 首先,从一端开始,每两人分为一组,得到 2n−12^{n-1} 组,每组 22 人。
    • 每组进行对战,获胜者进入胜者组,失败者进入败者组。
    • 将胜者组内的选手按原排列顺序重新排队,以此进行等级为 n−1n-1 的全锦标赛,决定他们的排名。
    • 败者组也同样排序,但在他们的每个排名基础上加上 2n−12^{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,当 Ai≥1A_i \geq 1 时,表示第 ii 名选手的编号为 AiA_i,当 Ai=0A_i = 0 时,表示第 ii 名选手的编号已不可辨认。

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

输入格式

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

NN A1A_1 A2A_2 ⋯\cdots A2NA_{2^N}

输出格式

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

输入输出样例

  • 输入#1

    3
    0 3 0 6 0 0 0 8

    输出#1

    YES
    3 4 8 6 2 1 7 5
  • 输入#2

    1
    2 1

    输出#2

    NO

说明/提示

限制

  • 1≤N≤181 \leq N \leq 18
  • 0≤Ai≤2N0 \leq A_i \leq 2^N
  • 除 00 外,AiA_i 中的整数不会重复出现。

样例解释 1

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

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页