ARC159C Permutation Addition 题解

不妨记 \(s= \sum a_i\)

  • \(n\) 是奇数

不难发现如果 \(s \bmod n \neq 0\),那么必然无解。

否则记 \(t=\dfrac{s}{n}\)

考虑每次选出一对下标 \((i,j)\),满足 \(a_i<t\)\(a_i>t\),我们相当于可以通过以下操作使得 \(a_i\) 变大 \(1\)\(a_j\) 减小 \(1\)

进行两次操作,第 \(1\) 次加上 \(1,2,3,4,5\dots n\),第二次加上 \(n,n-1,n-2\dots 1\)

不妨让 \(i\) 加的为 \(1,n\)\(j\) 加的为 \(2,n-1\),那么我们交换第一次操作中两个下标加的数,即 \(i\) 加的为 \(2,n\)\(j\) 加的为 \(1,n-1\)

不难发现一定有解。操作次数为 \(O(na)\) 的。

  • \(n\) 是偶数

如果 \(s\bmod n=0\),运用上述算法即可。

如果 \(s \bmod n=\dfrac{n}{2}\),考虑先随机一次操作之后再进行上述算法即可。

操作次数为 \(O(na)\)

posted @ 2024-02-08 19:56  OccDreamer  阅读(13)  评论(0)    收藏  举报