Список форумов ZCon ZCon
Соревнования по программированию
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Ваши решения для задачи "Игра JawBreaker"

 
Начать новую тему   Ответить на тему    Список форумов ZCon -> ZCon 2008
Предыдущая тема :: Следующая тема  
Автор Сообщение
Turbo
Site Admin


Зарегистрирован: 19.02.2006
Сообщения: 248

СообщениеДобавлено: Ср Апр 16, 2008 8:36 am    Заголовок сообщения: Ваши решения для задачи "Игра JawBreaker" Ответить с цитатой

В этой теме можно обсудить ваш подход к решению этой задачи. Прошу пока не выкладывать исходники целиком. Лучше описать решение словами.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
zhengxi



Зарегистрирован: 25.03.2008
Сообщения: 19

СообщениеДобавлено: Ср Апр 16, 2008 12:51 pm    Заголовок сообщения: Ответить с цитатой

Долго тормозил и хотел решать чуть ли не на Prolog'е Smile
Посмотрел лучшие решения, по 2-секундному времени решил, что там не решают все 500 полей, а выбирают поля побольше размером и в небольшим числом цветов и тыкают в них как попало, а на остальные отвечают N.
Сделал так же Smile
Потом добавил решение каждого такого поля несколько раз и выбор решения с лучшим баллом. Время выросло, но баллы выросли больше.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Stanislav Markevich



Зарегистрирован: 21.02.2006
Сообщения: 12
Откуда: Москва

СообщениеДобавлено: Ср Апр 16, 2008 12:57 pm    Заголовок сообщения: Ответить с цитатой

zhengxi писал(а):
Долго тормозил и хотел решать чуть ли не на Prolog'е Smile
Посмотрел лучшие решения, по 2-секундному времени решил, что там не решают все 500 полей, а выбирают поля побольше размером и в небольшим числом цветов и тыкают в них как попало, а на остальные отвечают N.

блин, как все просто было Wink
а я все пытался переборами решить...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Turbo
Site Admin


Зарегистрирован: 19.02.2006
Сообщения: 248

СообщениеДобавлено: Ср Апр 16, 2008 1:19 pm    Заголовок сообщения: Ответить с цитатой

Оставлю свой комментарий по задаче. Я её не планировал делать такой, что бы работал метод как описал zhengxi. Погорячился с нижней границей для C. В целом думаю самый эффективный метод это найти поля с максимальным размером и минимальным количеством цыетов, затем выбрать цвет который встречается чаще, потом покликать все остальное оставив одно или несколько огромных одноцветных полей. =)

В английскую базу задача пойдет с другим начислением очков, а именно (C*C)/(H*W) думаю это чуток подправит ситуацию.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Werewolf



Зарегистрирован: 16.03.2007
Сообщения: 28

СообщениеДобавлено: Ср Апр 16, 2008 2:58 pm    Заголовок сообщения: Ответить с цитатой

Самый простой и эффективный метод - собирать область одного цвета максимального размера.
Для этого сначала надо найти этот цвет, учитывая, что область может быть разорвана колонкой, которая этот цвет не содержит.
Затем сканируя поле сверху вниз, уничтожать все области, которые не содержат этот цвет, каждый раз рекурсивно проверяя, не появилось-ли новой области после уничтожения очередной.
По завершению сканирования уничтожить области выбранного вначале цвета. И опять вернуться к сканированию.

Тоже вначале пытался применить эвристику, типа создания рейтингов областей и уничтожения области с большим рейтингом за очередной ход.
Для этого подсчитываем очки, которые мы можем получить за области, лежащие выше текущей. Затем убираем текущую на тестовом поле и опять подсчитываем очки за образовавшиеся выше области. Рейтинг представлял собой разность эти очков.
Такой метод конечно же не прошел по времени )
_________________
Þá skelfur askr Yggdrasils, ok engi hlutr er þá óttalaus á himni eða jörðu.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DAle



Зарегистрирован: 21.02.2006
Сообщения: 24

СообщениеДобавлено: Ср Апр 16, 2008 10:46 pm    Заголовок сообщения: Re: Ваши решения для задачи "Игра JawBreaker" Ответить с цитатой

Turbo писал(а):
В этой теме можно обсудить ваш подход к решению этой задачи. Прошу пока не выкладывать исходники целиком. Лучше описать решение словами.


У меня примерно идея была следующая:
Пробуем избавляться от цветов. То есть на каждом шаге уничтожаем связную область наиболее редкого цвета, наименьшую по размеру среди таких.
Все тесты не трогал, пробовал выбирать по разным критериям. В результате выбирал первые 75 тестов, отсортированные по количеству цветов, учитывая размер.

P.S. Вообще, надо заметить, что задача хорошо бы подошла для TC Marathon, и довольно плохо подходит под spoj. Беда challenge задач на spoj в системе оценки, когда за каждый тест дается абсолютное количество баллов. Мало задач подходит под такую систему.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DAle



Зарегистрирован: 21.02.2006
Сообщения: 24

СообщениеДобавлено: Ср Апр 16, 2008 10:51 pm    Заголовок сообщения: Ответить с цитатой

Turbo писал(а):
Оставлю свой комментарий по задаче. Я её не планировал делать такой, что бы работал метод как описал zhengxi. Погорячился с нижней границей для C.


А мне почему-то показалось, что погорячился с границей для T. Слишком много тестов. Ничего особо интеллектуального написать вообще было нельзя.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
petrovich



Зарегистрирован: 16.04.2008
Сообщения: 6
Откуда: Минск

СообщениеДобавлено: Чт Апр 17, 2008 12:12 am    Заголовок сообщения: Ответить с цитатой

Мое первое навороченное решение с многочисленными поисками и оптимизациями не прошло по времени даже для десяти тестов. В итоге оставил банальное удаление групп всех цветов подряд кроме цвета с максимальным количеством полей. Затем --- удаление всех групп без разбора.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
zhengxi



Зарегистрирован: 25.03.2008
Сообщения: 19

СообщениеДобавлено: Чт Апр 17, 2008 1:42 am    Заголовок сообщения: Ответить с цитатой

Ну там не совсем рандом, тоже есть tabu_color (эффективнее оказалось выбирать цвет, шариков которого больше, а не цвет максимальноо блока). И эвристики вроде преимущество убирания горизонтальных соседей а не вертикальных, наличие одинаковых шариков над и под убираемой парой, равество их цвета _tabu_color...
Но я бы это все равно назвал рандомным решением, эти эвристики позволяют поднять результат с ?40M до ?70M, но это не анализ.
Ещё - нагенерил рандомных полей, и результаты работы эвристик на них хорошо коррелировали с результатами сабмитов. То есть можно было сделать автоматический поиск эвристик, на генетических алгоритмах, например.
В исходнике есть пара таких эвристик, которые я не понимаю почему работают, но они работают и на рандомном поле и на тестовых полях на spoj
Turbo писал(а):
Оставлю свой комментарий по задаче. Я её не планировал делать такой, что бы работал метод как описал zhengxi. Погорячился с нижней границей для C. В целом думаю самый эффективный метод это найти поля с максимальным размером и минимальным количеством цыетов, затем выбрать цвет который встречается чаще, потом покликать все остальное оставив одно или несколько огромных одноцветных полей. =)

В английскую базу задача пойдет с другим начислением очков, а именно (C*C)/(H*W) думаю это чуток подправит ситуацию.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов ZCon -> ZCon 2008 Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group