AT_agc060_e.[AGC060E] Number of Cycles

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

在本题中,提到“顺序”时,指的是 $ (1,2,\cdots,N) $ 的一个排列。

对于一个排列 $ a=(a_1,a_2,\cdots,a_N) $,定义 $ f(a) $ 为 $ a $ 的循环节(cycle)的个数。更准确地说,$ f(a) $ 的值定义如下:

  • 考虑一个有 $ N $ 个顶点、编号为 $ 1 $ 到 $ N $ 的无向图。对于每个 $ 1\leq i\leq N $,在顶点 $ i $ 和顶点 $ a_i $ 之间连一条边。此时,该图的连通分量个数即为 $ f(a) $。

给定一个排列 $ P=(P_1,P_2,\cdots,P_N) $ 和一个整数 $ K $。判断是否存在一个排列 $ x $,使得下列条件成立,并在存在时构造出一个解:

  • 令 $ y_i=P_{x_i} $,从而得到排列 $ y $。
  • 满足 $ f(x)+f(y)=K $。

对于每个输入文件,需要解答 $ T $ 个测试用例。

输入格式

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

$ T $
$ case_1 $
$ case_2 $
⋮\vdots
$ case_T $

每个测试用例的格式如下:

$ N $ $ K $ $ P_1 $ $ P_2 $ $ \cdots $ $ P_N $

输出格式

对于每个测试用例,如果不存在满足条件的排列 $ x $,输出 No。如果存在,输出如下格式的答案:

Yes $ x_1 $ $ x_2 $ $ \cdots $ $ x_N $

输出 Yes 或 No 时,字母大小写均可。若存在多个解,输出任意一个均可。

输入输出样例

  • 输入#1

    3
    3 3
    1 3 2
    2 2
    2 1
    4 8
    1 2 3 4

    输出#1

    Yes
    2 1 3
    No
    Yes
    1 2 3 4

说明/提示

数据范围

  • $ 1\leq T\leq 10^5 $
  • $ 2\leq N\leq 2\times 10^5 $
  • $ 2\leq K\leq 2N $
  • $ (P_1,P_2,\cdots,P_N) $ 是 $ (1,2,\cdots,N) $ 的一个排列
  • 每个输入文件中所有 $ N $ 的总和不超过 $ 2\times 10^5 $
  • 输入的所有数均为整数

样例解释 1

在第 $ 1 $ 个测试用例中,取 $ x=(2,1,3) $,则 $ y=(3,1,2) $,此时 $ f(x)+f(y)=2+1=3 $。

由 ChatGPT 4.1 翻译

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

首页