|
|
Показать все ветки Спрятать все ветки Показать все сообщения Спрятать все сообщения | Solution | miro.v.k | 2068. Игра с орехами | 16 янв 2022 02:51 | 5 | Can anybody describe the solution please ? Нужно по индукции показать, что если у нас одна куча из 2*N+1 камней (N>=0),то ходов всегда будет ровно N. А далее игра идёт параллельно в каждой из куч(неважно какое разбиение в каждой из куч,т.к. кол-во ходов одно и тоже). Побеждает первый игрок, если кол-во ходов нечётно, иначе-второй Если я правильно понимаю, то тут нужно применять метод полной математической индукции. Итак, нужно доказать, что 2*N + 1 разыгрывается за N ходов. 1. Базис. При N = 0. В этом случае 1 куча из 1 камня. Чтобы её разыграть нужно 0 ходов. 2. Допустим, для всех n = 1 .. k утверждение верно. Докажем для n = k + 1. 2*(k + 1) + 1 = 2*k + 1 + 2. Эту кучу можно разложить на кучи (1, 1, 2*k+1), т.е. затратить на разбор кучи итого k + 1 ход (1 ход чтобы разложить на (1, 1, 2*k + 1) и k ходов из предоположения индукции на 3-ю кучу). кучу 2*k + 1 + 2 можно разложить и другими способами, т.е. это будет набор (2*k1 + 1, 2*k2 + 1, 2*k3+1), при этом 2*k1 + 1 + 2*k2 + 1 + 2*k3 + 1 = 2*k + 3 => k1 + k2 + k3 = k, т.е. доказали и без того очевидное, что ki < k, т.е. попадает под предположение индукции, кроме того, что после первого хода нам потребуется ещё k ходов и итого будет k+1. куеде. My intuition... First, why not try to reduce the numbers as less as possible? That would seem like playing more turns. Well, for a pile of size n, this would mean making piles 1, 1, n-2, and the first two won't be used anymore so we could say we reduced n by 2. Is this useful? How many times can we do this? Well, floor(n/2) times, or as n is odd, (n-1)/2 times. Now keep this number. Let's try to split into arbitrary sizes, n = n1+n2+n3. The last expression is (n1+n2+n3-1)/2. How many times can we reduce by 2 with the split piles? All of them are odd, so this is (n1-1)/2 + (n2-1)/2 + (n3-1)/2 = (n1+n2+n3-1)/2 - 1. So no matter what we do for splitting, this number is always reduced by 1! And this number essentially measures how many turns we can still play, so that's all, if this number starts odd, Daenerys wins. Edited by author 16.01.2022 02:52 | Hint | antoniu200 | 2068. Игра с орехами | 24 июн 2019 23:54 | 1 | Hint antoniu200 24 июн 2019 23:54 if (nuts / 2 % 2 == 0) { daenerys_wins = !daenerys_wins; } | Test 3 | HaPhuong | 2068. Игра с орехами | 11 июл 2016 19:22 | 4 | Test 3 HaPhuong 17 окт 2015 15:28 5 777 313 465 99 1 in the test above, how Daenerys can win ??? While we can divide: #Daenerys 777 -> 3 heaps (259) - 313 -> can't divide #Stannis 465 -> 3 heaps (155) #Daenerys 99 -> 3 heaps (33) #Stannis 33 -> 3 heaps (11) - 1 -> can't devide ==> Stannis is the winner 5 777 313 465 99 1 in the test above, how Daenerys can win ??? While we can divide: #Daenerys 777 -> 3 heaps (259) - 313 -> can't divide #Stannis 465 -> 3 heaps (155) #Daenerys 99 -> 3 heaps (33) #Stannis 33 -> 3 heaps (11) - 1 -> can't devide ==> Stannis is the winner 99 / 3 = 33 we put 33 3 times in array and can make a move and others too "313" can be divided into three heaps with odd number of nuts like this: "313 = 311 + 1 + 1" It doesn't have to equal number of nuts. +++ bad test I don't know how to use my program at this task | Easy problem, but can be deceiving | jbjslair | 2068. Игра с орехами | 12 фев 2016 16:57 | 1 | Notice that they play "optimally". |
|
|
|