CF2143A.All Lengths Subtraction

入门

通过率:0%

AC君温馨提醒

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

题目描述

给定一个长度为 nn 的排列 pp。

你需要按照顺序对每个整数 kk 从 11 到 nn 依次进行一次操作:

  • 选择 pp 的一个长度恰为 kk 的子数组,将该子数组内的每个元素都减去 11。

完成全部 nn 次操作后,你的目标是让数组 pp 的所有元素都变为 00。

请判断是否可以达成目标。

一个长度为 nn 的排列是一个包含 11 到 nn 这 nn 个互不相同整数的数组。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是排列(数字 22 在数组中出现了两次),[1,3,4][1,3,4] 也不是排列(n=3n=3,但出现了 44)。

数组 aa 是数组 bb 的子数组,如果 aa 可以由 bb 删除若干(可能为零或全部)开头的元素和若干(可能为零或全部)末尾的元素得到。

输入格式

每组测试包含多个测试用例。第一行输入一个整数 tt (1≤t≤1001 \le t \le 100),表示测试用例数量。

接下来每个测试用例包含两行:

第一行输入一个整数 nn (1≤n≤1001 \leq n \leq 100),表示排列的长度。

第二行输入 p1,p2,…,pnp_1, p_2, \ldots, p_n (1≤pi≤n1 \le p_i \le n),表示排列本身。

输出格式

对于每个测试用例,如果可以在所有操作之后使数组 pp 的所有元素都变为 00,输出 "YES";否则输出 "NO"。

答案可以用任意大小写输出。例如,"yEs", "yes", "Yes" 和 "YES" 都会被识别为正确答案。

输入输出样例

  • 输入#1

    4
    4
    1 3 4 2
    5
    1 5 2 4 3
    5
    2 4 5 3 1
    3
    3 1 2

    输出#1

    YES
    NO
    YES
    NO

说明/提示

对于第一个测试用例,可以按照以下步骤操作:

  • k=1k=1:选择子数组 [3,3][3,3],数组 [1,3,4,2][1,3,4,2] 变为 [1,3,3,2][1,3,3,2]。
  • k=2k=2:选择子数组 [2,3][2,3],数组 [1,3,3,2][1,3,3,2] 变为 [1,2,2,2][1,2,2,2]。
  • k=3k=3:选择子数组 [2,4][2,4],数组 [1,2,2,2][1,2,2,2] 变为 [1,1,1,1][1,1,1,1]。
  • k=4k=4:选择子数组 [1,4][1,4],数组 [1,1,1,1][1,1,1,1] 变为 [0,0,0,0][0,0,0,0]。

因此,数组元素全部归零,答案为 YES。

对于第二个测试用例,可以证明无法将所有元素归零。

对于第三个测试用例,操作过程如下:

[2,4,5,3,1]→[2,4,4,3,1]→[2,3,3,3,1]→[2,2,2,2,1]→[1,1,1,1,1]→[0,0,0,0,0][2, 4, \boldsymbol{5}, 3, 1] \rightarrow [2, \boldsymbol{4, 4}, 3, 1] \rightarrow [2, \boldsymbol{3, 3, 3}, 1] \rightarrow [\boldsymbol{2, 2, 2, 2}, 1] \rightarrow [\boldsymbol{1, 1, 1, 1, 1}] \rightarrow [0, 0, 0, 0, 0]。

加粗的数表示每一步操作中被选中的子数组。

对于第四个测试用例,也可以证明无法将所有元素归零。

由 ChatGPT 5 翻译

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

首页