|
Мышки на доске | ☑ | ||
---|---|---|---|---|
0
Ненавижу 1С
гуру
11.08.11
✎
15:43
|
Есть доска, размеченная на клетки N*N. В каждой клетки сидит мышка.
По команде они все перебегают в одну из соседних (по стороне, но не по углу) клеток. В результате в одной клетке может быть сколь угодно мышек (реально не более 4). На месте мышка остаться после команды не может. Вопрос сколько много может остаться пустых клеток в зависимости от N? |
|||
73
Jstunner
11.08.11
✎
16:19
|
(71) + понял, поменялись местами..
|
|||
74
Krendel
11.08.11
✎
16:21
|
Ненавижу Ненавижу1С
|
|||
75
5 Элемент
11.08.11
✎
16:22
|
Цел((N*N)/2)
|
|||
76
_Atilla
11.08.11
✎
16:23
|
При n = 3k, n^2/3
|
|||
77
Krendel
11.08.11
✎
16:25
|
Для 2-х N(n-1)
Для 3-х N(n-1) Для 4-х N(n-2) Для 5-ти N(n-2) Для 6-ти N(n-3) Для 7-ми N(n-3) |
|||
78
_Atilla
11.08.11
✎
16:26
|
При n = 3k+1, k*n + (n-2)
|
|||
79
Krendel
11.08.11
✎
16:27
|
Кстати и для единицы работает ;-)
|
|||
80
5 Элемент
11.08.11
✎
16:27
|
А автор ответ знает?
|
|||
81
Соло
11.08.11
✎
16:28
|
(77) для 5-ти можно освободить 16 клеток :(
|
|||
82
_Atilla
11.08.11
✎
16:28
|
При n = 3k+2, k*n + 2*(n-2)
|
|||
83
Ненавижу 1С
гуру
11.08.11
✎
16:29
|
(80) мне не интересны проблемы с известными мне решениями
|
|||
84
Krendel
11.08.11
✎
16:29
|
(81) Как?
|
|||
85
5 Элемент
11.08.11
✎
16:29
|
(48) покажи как ты сделаешь 10?
|
|||
86
Krendel
11.08.11
✎
16:30
|
(85) Нельзя, ошибься
|
|||
87
5 Элемент
11.08.11
✎
16:30
|
(81) ты учитываешь что мышка не должна оставаться на месте?
|
|||
88
Ненавижу 1С
гуру
11.08.11
✎
16:30
|
(85)
ОМОО ОМОМ ОМОМ ОМОО О - пусто М - мышки (занято) |
|||
89
Krendel
11.08.11
✎
16:32
|
Ушел работать
|
|||
90
_Atilla
11.08.11
✎
16:32
|
(88) При n = 3k+1, k*n + (n-2)
6 мышек, k*n + (n-2) = 1*4 + (4-2) = 6 |
|||
91
Соло
11.08.11
✎
16:33
|
ОМООМ
ОМООМ ОМООО ОМОММ ОМООО К (81) |
|||
92
Azverin
11.08.11
✎
16:33
|
(88) 5 на 5 вообще-то надо)
|
|||
93
Ненавижу 1С
гуру
11.08.11
✎
16:35
|
(92) в (85) спрашивали про 4*4
|
|||
94
Соло
11.08.11
✎
16:37
|
т.е. 6 мышек собираются на 2 клетки, так же как и 4. Осталось решить с раскроем большого квадрата на куски 2*3 и 2*2
|
|||
95
Соло
11.08.11
✎
16:41
|
Вообще имеем шаблон
ОМО ОМО который можно крутить и перекрывать по "О". требуется заплонить квадрат N*N |
|||
96
Jstunner
11.08.11
✎
16:41
|
для N%3==0 все просто: 2/3*N^2
|
|||
97
Azverin
11.08.11
✎
16:41
|
(93) эт я переутомился - увидел 5 строк и 4 столбца)))
|
|||
98
Ненавижу 1С
гуру
11.08.11
✎
16:42
|
(96) видимо да, об этом же (76)
|
|||
99
y88
11.08.11
✎
16:43
|
Если N/3 без остатка, то = N/3*N*2
|
|||
100
y88
11.08.11
✎
16:43
|
упс, уже (96)
|
|||
101
y88
11.08.11
✎
16:53
|
Приблизительно так:
Цел(N/3)*N*2 + ЕслиЧетное(N) + N + ЕслиНеЧетное(N) + N + 2 |
|||
102
y88
11.08.11
✎
16:55
|
Иными словами:
Цел(N/3)*N*2 + (N%3 - 1)*2 + N |
|||
103
Kookish
11.08.11
✎
16:58
|
Короче, у меня вот что вышло.
Для N = X * 3 результат Z = N * N * 2 / 3 Для N = X * 3 + 2 результат Z = (N * N - 1) * 2 / 3 X - целое число. Для N = X * 3 + 1 еще сложнее. Там количество занятых ячеек в последнем столбце будет зависеть от кратности N четырем. |
|||
104
y88
11.08.11
✎
17:16
|
(102) Переделал (потом проверю :))
Для N = X * 3 ====== (N/3)*N*2 Для N = X * 3 + 1 == Цел(N/3)*N*2 + Цел(N/3) + 1 Для N = X * 3 + 2 == Цел(N/3)*N*2 + 2 |
|||
105
Domovoi
11.08.11
✎
17:34
|
Обрадовать вас?) при n=5 свободных - 18 )))
|
|||
106
Domovoi
11.08.11
✎
17:40
|
при n=6 свободных 26 вроде как.
|
|||
107
Domovoi
11.08.11
✎
17:40
|
Короче можно заново начинать думать)
|
|||
108
Jstunner
11.08.11
✎
17:40
|
(105) да ладно..
|
|||
109
Крошка Ру
11.08.11
✎
17:40
|
Итак имеем:
квадрат N*N (N>1) ВСЕ мышки из ВСЕХ клеток по команде бегут в соседнюю клетку Первый вопрос: если в клетке несколько мышек, они бегут по команде в разные стороны или в одну? Или, вернее, могут ли мышки бежат в одну сторону все вместе? Предположим, что могут.))) Постановка вопроса: какое максимальное количество клеток они могут освободить? (Правильно ли я понял?) Тогда: 1 случай: N=2; Мышки из клеток(1,2), (2,1) бегут в верхнюю левую клетку, мышки (1,1), (2,2) бегут в верхнюю правую клетку, 2 клетки заняты, остальные - свободны. Дальнейшие перемещения количество свободных клеток увеличить не могут. 2 случай: N>2; Часть А: Некоторое количество следующих итераций: Мышки из первой строчки из каждой клетки бегут вниз в соответствующие клетки второй строчки, остальные бегут вверх. Через (N-1) итераций имеем заполнеными только первые две строчки. Часть Б: То же самое, только по столбцам, т.е из первого столбца мышки бегут вправо, остальные влево. Через (N-1) итераций имеем заполненными только первые два столбца(вернее, с учетом Части А, заполнены их первые две строчки). Итого имеем заполненный квадрат 2*2 в левом верхнем углу,остальные клетки пусты, т.е. задача сведена к случаю N=2, т.е. ответ тот же: 2 клетки заняты, остальные - свободны. Так что, окончательный ответ: N*N-2(для N>1), и правильный ответ был дан в самом начале темы))))) Если же мышки выбирают направление каждая случайным образом, тогда задача поставлена некорректна и можно говорить только о вероятности того или иного варианта заполнения квадрата. При этом ненулевую вероятность имееют все варианты от 0 до (N*N-2) свободных клеток. |
|||
110
Domovoi
11.08.11
✎
17:42
|
(109)Какие итерации? Один раз команда дается.
|
|||
111
Крошка Ру
11.08.11
✎
17:43
|
Упсс... Тогда сорри, неправильно понял условия)))
|
|||
112
Tirael
11.08.11
✎
17:44
|
(105) Нарисуй как 18 получилось ))
|
|||
113
Domovoi
11.08.11
✎
17:44
|
Кстати я понял как при n=4 получилось 12))
|
|||
114
Domovoi
11.08.11
✎
17:46
|
Короче принци прост хз как теперь его математически настругать.
OOMOO MOOOM MOOMO OOOMM OMOOO |
|||
115
Domovoi
11.08.11
✎
17:47
|
(114)Ой не то
OMOMO OOOOO MOMOM OMOMO |
|||
116
Jstunner
11.08.11
✎
17:47
|
(114) куда делась мышка из первого ряда посередине?
|
|||
117
Domovoi
11.08.11
✎
17:47
|
А епт опять поспешил
OMOMO OOOOO MOMOM OOOOO OMOMO |
|||
118
Jstunner
11.08.11
✎
17:47
|
(115) куда делись две мышки из первого ряда, 2 и 4 клетки?
|
|||
119
Jstunner
11.08.11
✎
17:48
|
(117) все равно бред и не соответствует условиям
|
|||
120
Domovoi
11.08.11
✎
17:48
|
А все понял я скосячил)))
|
|||
121
Wasya
11.08.11
✎
18:24
|
Надо отедльно рассмотреть случаи
n=4k,4k+1,4k+2,4k+3 Для n=4k (3n^2/4)-n |
|||
122
SeraFim
12.08.11
✎
03:29
|
2:
0 0 2 2 3: 0 3 0 0 4 0 0 2 0 4: 0 3 0 0 0 3 0 2 0 3 0 2 0 3 0 0 Далее можно заметить, что столбцы N*3 (N строк, 3 столбца), наиболее эффективное разбиение. Поэтому, посмотрим, что можно сделать с оставшейся частью: 1. если в остатке - 1 Здесь будут эффективны: 0 2 2 0 1.1 если N - четное (это случаи N=4, 10, 16 и тд) в остатке либо 0, либо 2. максимальное количество свободных в таком случае равно половине N. 1.2 если N - нечетное (это случаи N=7, 13, 19 и тд) в остатке либо 3(даст дополнительно 1 пустое поле), либо 1(займет пустое поле и само же освободит). 2. если в остатке - 2 Здесь будет эффективно чередование: 0 0 2 2 (количество в этой строке меняется) 2.1 если N - четное (это случаи N=8, 14, 20 и тд). Получаем N свободных ячеек. 2.2 если N - нечетное (это случаи N=5, 11, 17 и тд).Получаем (N-1)+2 свободных ячеек. Сложно в какую-то одну формулу свести |
|||
123
NS
12.08.11
✎
03:44
|
Чего тут сводить? Понятно что все мышки могут собраться в две клетки на любой доске от 2x2.
Пусть у мышки изначально координаты x,y Назовем четными мышками тех, у которых x+y четно, нечетными тех, у кого нечетно. Возьмем любое число шагов 2*N. Понятно что любая четная мышка за это число шагов может добраться до любой четной клетки, и любая нечетная мышка до любой нечетной клетки. (если мы можем добраться до клетки за M шагов, то сделав шаг туда-обратно сможем и за М+2). Выберем любую четную клетку на доске, и любую нечетную. За N*2 шагов мы легко загоним всех четных мышек в эту четную клетку, а нечетных в выбранную нечтную. |
|||
124
NS
12.08.11
✎
03:45
|
впервые правильный ответ дан в (5) и (7)
задача совсем уж простая. |
|||
125
NS
12.08.11
✎
03:48
|
А, один раз перебегают?
Сейчас, дам ответ. |
|||
126
SeraFim
12.08.11
✎
03:52
|
(125) да-да, всего 1 разик. Причем обрати внимание, что КАЖДАЯ мышка ОБЯЗАНА куда-либо переместиться
|
|||
127
NS
12.08.11
✎
03:54
|
(126) Понял. Задача - сколько минимально нужно расставить ладей, которые двигаются только на одну клетку, чтоб все поля доски были биты.
|
|||
128
SeraFim
12.08.11
✎
03:57
|
(127) ого как перефразировал.
|
|||
129
NS
12.08.11
✎
04:07
|
В случае четной доски на каждую четную вертикаль нужно поставить по N ладей, кроме последней, а на последнюю можно поставить попарно, то есть вот так
00000000 xxxxxxxx 00000000 xxxxxxxx 00000000 xxxxxxxx 00000000 0xx00xx0 в случае нечетной доски вот так 00000 xxxxx 00000 xxxxx 00000 То есть для нечетной доски N*(N-1)/2 А для четной - пара минут, сейчас формулу выведу. |
|||
130
NS
12.08.11
✎
04:09
|
поправка - я пишу сколько минимально может быть занято. Чтоб ответить на вопрос в (0) - нужно это значение вычесть из N*N
|
|||
131
SeraFim
12.08.11
✎
04:12
|
(129) по твоему алгоритму: для 6*6
0 0 0 0 0 0 М М М М М М 0 0 0 0 0 0 М М М М М М 0 0 0 0 0 0 0 М М 0 М М получаем 20 свободных (16 занятых) однако можно сделать так: 0 0 0 0 0 0 М М М М М М 0 0 0 0 0 0 0 0 0 0 0 0 М М М М М М 0 0 0 0 0 0 получаем 24 свободных (12 занятых) |
|||
132
NS
12.08.11
✎
04:14
|
(131) Наврал я. Конечно ряды ставим не через один, а через два, начиная со второго. Надо посчитать при каких условиях образуется исключительный последний ряд, и сколько в нем получается мышек.
|
|||
133
SeraFim
12.08.11
✎
04:16
|
(132) я так и сделал. Только транспонировал)
|
|||
134
NS
12.08.11
✎
04:19
|
Если N mod 3 = 0
Тогда мышек N*N/3 Если N mod 3 = 2 Тогда мышек N*(N+1)/3 И самый поганый случай когда N mod 3 = 1 0000000 xxxxxxx 0000000 0000000 xxxxxxx 0000000 0xx0xx0 |
|||
135
NS
12.08.11
✎
04:21
|
Хотя чего в нем поганого?
(N-1)/3*2+(N-1)*N/3 |
|||
136
NS
12.08.11
✎
04:22
|
образец для первого случая - (131)
Для второго - 00000 ххххх 00000 00000 ххххх |
|||
137
SeraFim
12.08.11
✎
04:29
|
(136) можно же так:
00000 ххххх 00000 00000 хх0хх |
|||
138
SeraFim
12.08.11
✎
04:29
|
(137)ой нет, ошибся
|
|||
139
NS
12.08.11
✎
04:29
|
(137) Нельзя.
|
|||
140
SeraFim
12.08.11
✎
04:31
|
(136) можно же так:
00000 ххххх 00000 0х0х0 0х0х0 |
|||
141
NS
12.08.11
✎
04:33
|
Да, точно - одну клетку для исключительного случая можно сэкономить.
|
|||
143
NS
12.08.11
✎
04:38
|
Если N mod 6 = 5, тогда
(N-2)*N/3+(N-1) |
|||
144
NS
12.08.11
✎
04:40
|
Что равно
N*(N+1)/3 - 1 |
|||
145
NS
12.08.11
✎
04:49
|
В третьем случае я тоже ошибся - (134)
там другая формула - расположение 0xx00xx0 - пустые клетки кроме краев парно. |
|||
146
SeraFim
12.08.11
✎
04:56
|
в общем, как я понимаю, пришел к тому же, что и у меня в (122). Только я наверное плохо расписал)
|
|||
147
SeraFim
12.08.11
✎
05:02
|
вот возможные ситуации, когда N mod 3 = 1
...0xx0 ...0xxх0 ...0xххх0 ...0xx0хх0 |
|||
148
NS
12.08.11
✎
05:37
|
Всё в корне неверно, при N стремящемся к бесконечности, количество занятых мышами клеток стремится к N*N/4
0Y000Y000Y000Y0 0X0Z0X0Z0X0Z0X0 Z00Y000Y000Y00Z Z00X0Z0X0Z0X00Z 0Y000Y000Y000Y0 0X000X000X000X0 Z00Y000Y000Y00Z Z00X000X000X00Z 0Y000Y000Y000Y0 0X0Z0X0Z0X0Z0X0 0Z0Z000Z000Z0Z0 таким порядком мы можем заполнить всю доску, Z будет максимум на двух крайних рядах |
|||
149
NS
12.08.11
✎
05:39
|
А в центре - на каждые четыре клетки - по одной мыши.
|
|||
150
NS
12.08.11
✎
05:42
|
решать надо по другому - сначала смотреть в какое число клеток мы можем собрать всех четных мышей, а потом - нечетных.
|
|||
151
SeraFim
12.08.11
✎
05:46
|
Что есть x, y, и z?
|
|||
152
SeraFim
12.08.11
✎
05:59
|
(148) не пойму принципа построения (как распространить на случай любого N). к тому же - это поле размерами 15*11 - в нем 108 пустых клеток.
аналогичное поле, заполненное 0X0... 0X0... ... 0X0... будет содержать больше пустых клеток - 110 клеток |
|||
153
NS
12.08.11
✎
06:15
|
Х - клетки в которые мы собираем четных мышей, Y - нечетных. располагаются вот так -
............... .x...x...x...x. ............... ...x...x...x... ............... .x...x...x...x. ............... ...x...x...x... ............... плотность в центре - одна занятая клетка из четырех. |
|||
154
NS
12.08.11
✎
06:16
|
а во всех предыдущих построениях - одна занятая клетка из трех.
|
|||
155
y88
12.08.11
✎
10:35
|
Три алгоритм перемещения мышей для N%3:
0 0 0 0 0 х х х х х 0 0 0 0 0 0 х 0 х 0 <--- 0 х 0 х 0 <--- 0 0 0 0 0 0 x x x x x x 0 0 0 0 0 0 0 0 0 0 0 0 x x x x x x 0 0 0 0 0 0 0 0 0 0 0 0 0 x x x x x x x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x x x x x x x 0 0 0 0 0 0 0 0 x x 0 x x 0 <--- |
|||
156
Крошка Ру
12.08.11
✎
10:47
|
Да, кстати, а все сразу сообразили, что у любой заполненной клетки(после команды) по соседству должна быть ещё как минимум одна, т.к. мышке из этой клетки(до команды) тоже нужно куда-то по команде переместиться?
P.S. ТС - ты сволочь! Я всю ночь не спал, мышек из клетки в клетку перегонял...))) |
|||
157
Ненавижу 1С
гуру
12.08.11
✎
10:49
|
(156) все сообразили
заведи себе женщину |
|||
158
Крошка Ру
12.08.11
✎
10:52
|
Не путай мягкое с теплым
|
|||
159
Lex1C
12.08.11
✎
10:57
|
(0) с доказательством того, что именно такой расклад будет оптимальным задача далеко не так тривиальна...
|
|||
160
y88
12.08.11
✎
11:00
|
В (104) мое решение
|
|||
161
Lex1C
12.08.11
✎
11:03
|
(160) решение должно включать почему именно данный порядок будет оптимальным. Т.е. доказательство того, что все остальные перемещения не оставят больше пустых клеток.
|
|||
162
y88
12.08.11
✎
12:19
|
(161) исходя из (155)
|
|||
164
NS
12.08.11
✎
12:51
|
Еще раз повторю - при N стремящемся к бесконечности, в правильном решении число занятых клеток стремится к N*N/4
Исходя из этого - (104) неверно. Сейчас попробую оптимизировать перебор, и выложить переборное решение. |
|||
165
SeraFim
12.08.11
✎
17:10
|
ТС, ответ будет?
|
|||
166
Ненавижу 1С
гуру
12.08.11
✎
17:15
|
(165) я его не знаю
|
|||
167
NS
12.08.11
✎
17:27
|
(166) Программу еще пишу, но практически на 100% уверен что ответа в радикалах не существует, только перебором.
|
|||
168
RomanYS
13.08.11
✎
09:12
|
В общем случае:
Цел(2/3*n*n) |
|||
169
NS
13.08.11
✎
16:17
|
(168) Еще раз повторю - при N стремящемся к бесконечности стремится к 3/4*N*N
Прочитай ветку. |
|||
170
NS
17.08.11
✎
21:23
|
Подниму ветку, чтоб не закрылась.
|
|||
171
Ненавижу 1С
гуру
23.08.11
✎
21:42
|
(170) извини, был в отпуске ))
|
|||
172
NS
23.08.11
✎
22:45
|
(171) А я из больницы только что выписался :) Ногу сломал.
Теперь "немного титановый". Завтра дома, мож программку всё-таки напишу. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |