链接:https://ac.nowcoder.com/acm/problem/232994 来源:牛客网 给定一个序列,问你有没有可能重新排列这个序列使得所有长度小于等于 2 2 的子区间和不等于 0 0。
时间: 2023-12-13 22:03:52 浏览: 180
关于数字排序的问题(不大于0个数字)
我们可以思考一下,对于长度为 $2$ 的子区间,我们有哪些可能的取值,以及它们的数量。
假设原序列为 $a_1,a_2,\cdots,a_n$,那么长度为 $2$ 的子区间有 $n-1$ 个,分别为 $(a_1,a_2),(a_2,a_3),\cdots,(a_{n-1},a_n)$。由于每个数只能出现在一个长度为 $2$ 的子区间中,所以每种取值只能出现一次。而长度为 $2$ 的子区间的和可以为任意数(只需要两个数不相等即可),那么长度为 $2$ 的子区间的取值一共有 $(n-1)\times(n-2)/2$ 种,这是一个二次函数,当 $n=3$ 时为 $1$,当 $n=4$ 时为 $3$,当 $n=5$ 时为 $6$,以此类推。
因此,当 $n\le 3$ 时一定可以满足题目的要求。当 $n\ge 4$ 时,如果存在一个数 $x$,出现了至少 $n/2$ 次,那么这个数可以和任意一个不等于它的数组成长度为 $2$ 的子区间,一共有至少 $n/2\times(n/2-1)/2$ 个长度为 $2$ 的子区间和为 $x$。而 $n/2\times(n/2-1)/2$ 是一个关于 $n$ 的二次函数,当 $n=4$ 时为 $1$,当 $n=5$ 时为 $2$,当 $n=6$ 时为 $3$,以此类推。因此,当 $n\ge 4$ 且存在一个数出现至少 $n/2$ 次时,一定无法满足题目的要求。
综上所述,当 $n\le 3$ 或不存在一个数出现至少 $n/2$ 次时,可以重新排列这个序列使得所有长度小于等于 $2$ 的子区间和不等于 $0$,否则无法满足题目的要求。
阅读全文