请求添加三组 hack 数据
  • 板块P1667 数列
  • 楼主wheneveright
  • 当前回复13
  • 已保存回复13
  • 发布时间2021/11/7 16:23
  • 上次更新2023/11/4 01:09:51
查看原帖
请求添加三组 hack 数据
189351
wheneveright楼主2021/11/7 16:23

RT.\text{RT.}

已知原本数据不存在输出 -1 的情况。

本题输出为 -1 的情况有三种:

  • 前缀和数组中出现相同的数
  • 前缀和数组中出现负数
  • 前缀和数组中最后一位并非最大

接下来为这三种不能取的证明:

以下前缀和数组用 ss 代替

1:ss 中出现相同的数

根据这题的普遍做法,将原数组取前缀和后使其单调升才能使交换后的原序列全是正。

那么如果 ss 中出现相同的数,那么无论怎么交换都是不能做到使其单调升的。

数据:

3
1 -1 1
-1

2:ss 中出现负数

因为在结束时 ss 数组是单调升的,根据前缀和的定义:s1=a1s_1 = a_1 可以得出结束时 a1a_1 的值。

那么如果 ss 中有负数的话,排序后的 s1s_1 一定为负数,相对应的 a1a_1 就是负数,不符合题意。

数据:

3
1 -2 1000
-1

3:snmax(s)s_n \neq max (s)

因为每次操作的 l,rl, r 的条件为 1<lr<n1 < l \le r < n。而前缀和交换时是交换 sl1s_{l-1}srs_r

不难发现第 nn 个位置是无法被交换到的,那么如果最后一位不是最大,那么无法将其交换到相对应的位置。

数据:

4
1 3 -2 1
-1

以上。

2021/11/7 16:23
加载中...