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)\)。

浙公网安备 33010602011771号