|
|
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Недавно решил олимпиадную задачу вот такого содержания. Она называется симпатичные узоры Условие: Имеется прямоугольник NxM метров. Узор составляется из плиток двух цветов. Необходимо вывести кол-во всех правильных узоров которые можно составить на данном прямоугольнике. Причем узор считается правильным если нигде не встречается квадрата 2х2 метра, полностью покрытого плитками одного цвета. Входные данные: N и М (1<=MxN<=100) Вывести кол-во узоров. Узоры получающиеся друг из друга сдвигом поворотом или отражением считаются различными. Время на тест 10 сек. Примеры выходных данных: Input.txt Output.txt 2 2 14 3 3 322 Задачу я решил используя размещения с повторениями. Создал матрицу N на М Делал переборы цифр 1 и 0 (соответсвенно 1 - один цвет допустим белый 0-второй цвет (допустим черный)) а потом проходился по всей матрице , делая поиск квадрата 2 на 2 из одних и тех же цифр Например пусть N=2 и M=2 . Вот все варианты узоров (ниже я привожу матрицу) 00 00 00 00 01 01 01 01 10 10 10 10 11 11 11 11 00 01 10 11 00 01 10 11 00 01 10 11 00 01 10 11 Здесь всего получилось 16 узоров это по формуле для размещений с повторениями получается (2^N)^M из них 14 правильных, а два крайних неправильно Аналогично и для других значений . Ответы я сверил все совпадает для 2 на 2 14 узоров для 3 на 3 322 узора Проблема в том что уже при размерности 5 на 5 получается тест длится около минуты а ведь размерность MxN<=100 так если будет например N=1 и M=100 или даже N=2 и M=50 то компьютер зависнет надолгие часы перебирая все комбинации Как еще можно решить эту задачу? Перебором получается очень долго ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2011, 21:21 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Damir_85Например пусть N=2 и M=2 . Вот все варианты узоров (ниже я привожу матрицу) 00 00 00 00 01 01 01 01 10 10 10 10 11 11 11 11 00 01 10 11 00 01 10 11 00 01 10 11 00 01 10 11 Здесь всего получилось 16 узоров это по формуле для размещений с повторениями получается (2^N)^M из них 14 правильных, а два крайних неправильно Damir_85Узоры получающиеся друг из друга сдвигом поворотом или отражением считаются различными.я наверно чего-то недопонимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2011, 21:35 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
а, разобрался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2011, 21:37 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Яростный Меч, ну да различные...я же все возможные варианты перебираю ответ сходится но долго ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2011, 21:37 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Недостает еще одного условия задачи: какого размера плитка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2011, 10:05 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
по смыслу задачи выходит, что плитки имеют размер 1х1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2011, 11:56 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Worobjoff, Там вначале я писал: Входные данные: N и М (1<=MxN<=100) даже если 1х1 то узор считается правильным: либо 0 либо 1, т.е либо первый цвет либо второй Размерность M и N задается во входном файле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2011, 18:36 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Damir_85Worobjoff, Там вначале я писал: Входные данные: N и М (1<=MxN<=100) даже если 1х1 то узор считается правильным: либо 0 либо 1, т.е либо первый цвет либо второй Размерность M и N задается во входном файле MxN - это размер прямоугольника. Плитка какого размера? Подразумевается, что плитка 1х1. Т.е. прямоугольник MxN плиток ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2011, 18:41 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, а ну да плитка 1х1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2011, 18:42 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Вот и ко мне че то никаких идей не приходит каким еще способом можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2011, 18:37 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Damir_85, Идея тут, похоже, единственная - рекуррентно вычислять. Но уж больно тягомотно получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2011, 19:09 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, наверняка есть какие нибудь зависимости между комбинациями и вместо того чтобы после очередной генерации комбинации проходится по всей матрице на поиск квадрата одного цвета можно сразу исключить эту комбинацию тем самым время перебора сократится Например для 00 00 00 00 01 01 01 01 10 10 10 10 11 11 11 11 00 01 10 11 00 01 10 11 00 01 10 11 00 01 10 11 сразу видно что последняя комбинация и первая не подходят и их можно исключить но конечно если размерность побольше тут уж надо как то придумать найти эти зависимости ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2011, 19:31 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Damir_85, Тут без перебора должно решаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2011, 01:04 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Именно, что решаться должно без пербора. Поскольку именно генерация наборов значений (путь это будут даже всего лишь две восьмибайтных переменных) убивает львиную долю выделенного времени. Я тоже тут подумал на досуге - но верного ответа сходу не нашел... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2011, 04:46 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Это задача отсюда (Третий день, задача M. (стр.80)) Поскольку доказывается, что суммарное время работы составляет O(mn2 n )<=O(100*2 10 ), то решение вполне достижимо за указанное время (на олимпиаде ограничения были еще жестче - m*n<=300, t<=5c, mem<=256) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2011, 06:29 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
AndreTM, Есть подозрение, что можно достичь суммарного времени работы O(m*n*k), где k=2^4 или около того. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2011, 19:20 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Ну что же... Здесь (стр.106-107) объяснения и решение (без объединяющего реккурентного цикла) Здесь (стр. 26-27) примерно то же, и полное решение. Проверил и на BP (при N<=5) - все работает, а на VBA(!) при n=m=10 даже без оптимизации расчет занял меньше 15 сек... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2011, 07:16 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Спасибо огромное все ссылки посмотрю Да перебор действительно убивает большую часть времени ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2011, 18:45 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
AndreTM, спасибо большое за книги по ссылкам я хотел спросить а вот последние две ссылки Динамическое программирование по профилю это просто как отдельная статья или это из какой то книги Если из книги то кто автор и как называется чтобы скачал Зимняя школа по программированию тоже классная уже скачал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2011, 19:03 |
|
||
|
Олимпиадная задача
|
|||
|---|---|---|---|
|
#18+
Василевский - это статья из вот этой книги. Вторая ссылка - это лекция по ДП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2011, 02:35 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=75&tid=1342541]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 321ms |

| 0 / 0 |
