AT_apc001_h.Generalized Insertion Sort

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

给定一棵有 NN 个顶点的有根树。顶点编号为 0, 1, …, N−10,\ 1,\ \ldots,\ N-1,根为顶点 00。顶点 ii(i=1, 2, …, N−1i=1,\ 2,\ \ldots,\ N-1)的父节点为 pip_i。

初始时,每个顶点 ii 上写有一个整数 aia_i。(a0, a1, …, aN−1)(a_0,\ a_1,\ \ldots,\ a_{N-1}) 是 00 到 N−1N-1 的一个排列。

你可以最多进行 2500025000 次如下操作,从而使得每个顶点 ii 上的值变为 ii。

  • 选择一个顶点 vv。考虑从顶点 00 到顶点 vv 的路径。
  • 将这条路径上的顶点的值循环右移。也就是说,对于路径上的每一条边 (i,pi)(i, p_i),将顶点 pip_i 上的值写到顶点 ii 上,并将原来顶点 00 上的值写到顶点 vv 上。
  • 你也可以选择顶点 00,但在这种情况下,这个操作什么也不做。

输入格式

输入从标准输入读入,格式如下:

NN p1p_1 p2p_2 ... pN−1p_{N-1} a0a_0 a1a_1 ... aN−1a_{N-1}

输出格式

第一行输出操作次数 QQ。
接下来的 QQ 行,每行输出一次操作中选择的顶点编号。

输入输出样例

  • 输入#1

    5
    0 1 2 3
    2 4 0 1 3

    输出#1

    2
    3
    4
  • 输入#2

    5
    0 1 2 2
    4 3 1 2 0

    输出#2

    3
    4
    3
    1

说明/提示

约束条件

  • 2≤N≤20002 \leq N \leq 2000
  • 0≤pi≤i−10 \leq p_i \leq i-1
  • (a0, a1, …, aN−1)(a_0,\ a_1,\ \ldots,\ a_{N-1}) 是 00 到 N−1N-1 的一个排列

样例说明 1

  • 第 11 次操作后,顶点 0, 1, …, 40,\ 1,\ \ldots,\ 4 上的值分别变为 4, 0, 1, 2, 34,\ 0,\ 1,\ 2,\ 3。

样例说明 2

  • 第 11 次操作后,顶点 0, 1, …, 40,\ 1,\ \ldots,\ 4 上的值分别变为 3, 1, 0, 2, 43,\ 1,\ 0,\ 2,\ 4。
  • 第 22 次操作后,顶点 0, 1, …, 40,\ 1,\ \ldots,\ 4 上的值分别变为 1, 0, 2, 3, 41,\ 0,\ 2,\ 3,\ 4。

由 ChatGPT 5 翻译

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

首页