Codeforces353-div2C Money Transfers
Problem - C - Codeforces
There are n banks in the city where Vasya lives, they are located in a circle, such that any two banks are neighbouring if their indices differ by no more than . Also, bank 1 and bank n are neighbours if n > 1. No bank is a neighbour of itself.
隣接した場所の値を自由に交換出来る時,数列を全部にするには最小何回で出来るか.
円環なので,切って つ繋げて表現した.最初は累積和を取って, となる区間で移動させるようにしていた.これはそれぞれの の和が答えで,つまり となる.
累積和が となる場所の個数は,累積和を開始する地点による.
上の図(適当)は,累積和をカウントしたものとする.開始地点をずらすというのは,赤の線をどこに引くか( となる基準をどこにするか)ということになる.よって,最初の累積和の数の個数を数えて,そのmaxを から引く.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
|