powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Олимпиадная задача
22 сообщений из 22, страница 1 из 1
Олимпиадная задача
    #37585815
Damir_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Недавно решил олимпиадную задачу вот такого содержания. Она называется симпатичные узоры
Условие: Имеется прямоугольник 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 то компьютер зависнет надолгие часы перебирая все комбинации
Как еще можно решить эту задачу? Перебором получается очень долго
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37585829
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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Узоры получающиеся друг из друга сдвигом поворотом или отражением считаются различными.я наверно чего-то недопонимаю...
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37585832
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, разобрался.
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37585834
Damir_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меч,

ну да различные...я же все возможные варианты перебираю
ответ сходится но долго
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37586233
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недостает еще одного условия задачи: какого размера плитка?
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37586523
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по смыслу задачи выходит, что плитки имеют размер 1х1
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37587591
Damir_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Worobjoff,
Там вначале я писал:
Входные данные: N и М (1<=MxN<=100)
даже если 1х1 то узор считается правильным: либо 0 либо 1, т.е либо первый цвет либо второй
Размерность M и N задается во входном файле
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37587599
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Damir_85Worobjoff,
Там вначале я писал:
Входные данные: N и М (1<=MxN<=100)
даже если 1х1 то узор считается правильным: либо 0 либо 1, т.е либо первый цвет либо второй
Размерность M и N задается во входном файле
MxN - это размер прямоугольника. Плитка какого размера?

Подразумевается, что плитка 1х1. Т.е. прямоугольник MxN плиток
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37587601
Damir_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon,
а ну да плитка 1х1
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37589658
Damir_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот и ко мне че то никаких идей не приходит каким еще способом можно
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37589727
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Damir_85,

Идея тут, похоже, единственная - рекуррентно вычислять.
Но уж больно тягомотно получается.
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37589746
Damir_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
сразу видно что последняя комбинация и первая не подходят и их можно исключить но конечно если размерность побольше тут уж надо как то придумать найти эти зависимости )
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37590009
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Damir_85,

Тут без перебора должно решаться.
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37590082
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно, что решаться должно без пербора.
Поскольку именно генерация наборов значений (путь это будут даже всего лишь две восьмибайтных переменных) убивает львиную долю выделенного времени.
Я тоже тут подумал на досуге - но верного ответа сходу не нашел...
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37590092
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Damir_85,

Эта задача: Nice Patterns Strike Back ?

"Китайское" решение на Java
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37590097
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это задача отсюда (Третий день, задача M. (стр.80))
Поскольку доказывается, что суммарное время работы составляет O(mn2 n )<=O(100*2 10 ), то решение вполне достижимо за указанное время (на олимпиаде ограничения были еще жестче - m*n<=300, t<=5c, mem<=256)
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37591398
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

Есть подозрение, что можно достичь суммарного времени работы O(m*n*k),
где k=2^4 или около того.
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37591764
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что же...
Здесь (стр.106-107) объяснения и решение (без объединяющего реккурентного цикла)
Здесь (стр. 26-27) примерно то же, и полное решение.

Проверил и на BP (при N<=5) - все работает, а на VBA(!) при n=m=10 даже без оптимизации расчет занял меньше 15 сек...
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37592062
Damir_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо огромное все ссылки посмотрю
Да перебор действительно убивает большую часть времени
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37592073
Damir_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,
спасибо большое за книги по ссылкам
я хотел спросить а вот последние две ссылки Динамическое программирование по профилю это просто как отдельная статья или это из какой то книги Если из книги то кто автор и как называется чтобы скачал
Зимняя школа по программированию тоже классная уже скачал
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37592919
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василевский - это статья из вот этой книги. Вторая ссылка - это лекция по ДП.
...
Рейтинг: 0 / 0
Олимпиадная задача
    #37592996
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, кстати... чтобы не быть голословным
Оно.., на VB ёкзель.., на моём - 11,46 сек...
Ограничения - заданы константами. Лень, знаете ли, делать динамику массивов...
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Олимпиадная задача
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]