Editorial for UACC 1 P5 - A Lab Report
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
For the sequence to become an arithmetic sequence, we need the differences between adjacent elements to be equal. This motivates us to consider the difference array , where for . We can now ignore array . There are three possible types of operations:
- The entire array is shifted. Then, is unaffected.
- Either the first or the last element of the array is part of the shifted array, but not both. Then, exactly one element of increases or decreases by .
- Neither the first nor the last element of the array is part of the shifted array. Then, exactly one element of is increased by , and exactly one element of is decreased by .
Suppose that we want all elements of to be equal to , and let be the number of operations needed for this to occur. It would be useful to find a formula for . A natural step is to separately consider the elements of greater than , and the elements of less than . Let be the sum of for all , and let be the sum of for all . We can think of and as the number of decrements and increments needed, respectively, in order for all elements of to be equal to . Note that:
- A lower bound of is . This is because each operation can decrease by at most , and decrease by at most .
- An upper bound of is . This is because we can repeatedly pair one increment with one decrement using a type operation. If we run out of increments or decrements, we can use type operations instead.
It follows that .
Now, we should try to find the optimal value of . Observe that as increases, decreases while increases. This means that is minimised when and are approximately equal. It's possible to compute immediately using a binary search, but there is a more direct formula. Let be the number of elements of greater than or equal to , and let be the number of elements of smaller than , so that . In order for and to be equal, we would require:
This means that the optimal value of is the mean of . This should make sense intuitively as well, considering the mean as some kind of equilibrium value. (Indeed, it is directly analagous to clockwise torque being equal to anticlockwise torque around the centre of mass.) If the mean is not an integer, we should try both rounding the mean down as well as up. Computing the value of using our formula yields the correct answer. Be careful of the special case where as the mean of an empty sequence is undefined.
Time complexity: or
Comments