P1963 [NOI2009]变换序列

    • 267通过
    • 604提交
  • 题目提供者 洛谷OnlineJudge
  • 评测方式 云端评测
  • 标签 二分图 匈牙利算法 NOI系列 2009
  • 难度 省选/NOI-
  • 时空限制 1000ms / 128MB

题解

  • 提示:收藏到任务计划后,可在首页查看。
  • 最新讨论 显示

    推荐的相关题目 显示

    题目描述

    对于 $N$ 个整数 $0, 1, \cdots, N-1$ ,一个变换序列 $T$ 可以将 $i$ 变成 $T_i$ ,其中 $T_i \in \{ 0,1,\cdots, N-1\}$ 且 $\bigcup_{i=0}^{N-1} \{T_i\} = \{0,1,\cdots , N-1\}$ 。 , $\forall x,y \in \{0,1,\cdots , N-1\}$ ,定义x和y之间的距离 $D(x,y)=min\{|x-y|,N-|x-y|\}$ 。给定每个 $i$ 和 $T_i$ 之间的距离 $D(i,T_i)$ ,你需要求出一个满足要求的变换序列T。如果有多个满足条件的序列,输出其中字典序最小的一个。

    说明:对于两个变换序列 $S$ 和 $T$ ,如果存在 $p<N$ ,满足对于 $i=0,1,\cdots p-1$ , $S_i=T_i$ 且 $S_p<T_p$ ,我们称 $S$ 比 $T$ 字典序小。

    输入输出格式

    输入格式:

    第一行包含一个整数 $N$ ,表示序列的长度。接下来的一行包含 $N$ 个整数 $D_i$ ,其中 $D_i$ 表示 $i$ 和 $T_i$ 之间的距离。

    输出格式:

    如果至少存在一个满足要求的变换序列 $T$ ,则输出文件中包含一行 $N$ 个整数,表示你计算得到的字典序最小的 $T$ ;否则输出No Answer(不含引号)。注意:输出文件中相邻两个数之间用一个空格分开,行末不包含多余空格。

    输入输出样例

    输入样例#1: 复制
    5
    1 1 2 2 1
    
    输出样例#1: 复制
    1 2 4 0 3

    说明

    对于30%的数据,满足:N<=50;

    对于60%的数据,满足:N<=500;

    对于100%的数据,满足:N<=10000。

    提示
    标程仅供做题后或实在无思路时参考。
    请自觉、自律地使用该功能并请对自己的学习负责。
    如果发现恶意抄袭标程,将按照I类违反进行处理。