| ||||
Модное платье
Город в полном составе готовится к времени фестивалей, кабаре и свадеб. Все женщины города с нетерпением ждут "Главный бал года", который проводится в последнюю субботу праздника. "Главный бал" это знаковое событие, к которому начинают готовиться загодя до начала. Один из главных вопросов который задает себе каждая девушка города: "Что мне одеть, что бы поразить всех своей красотой?". Эта проблема особенно ощутима в связи с тем, что после этого праздника следующий будет только спустя несколько месяцев. И в течение этого скучного времени дамам приятно вспоминать как обворожительно и оригинально они выглядели во время бала. И само собой Вам следует запомнить, что если две подружки появятся в одинаковых платьях, то они будут объектом шуток и приколов на ближайшие несколько лет. Как и в большинстве сложных проблем между женщинами в них завязли и мужчины города. И каждый день каждая женщина города спрашивает у своего парня совета, что именно ей одеть. К сожалению мужчины совсем не подкованы в вопросах моды и поэтому они обратились за помощью к вам. У вас также не очень много опыта в области моды, однако, как специалист по компьютерам и одаренный человек, который никогда не сдается, вы знаете, как решить любую проблему. Вы смоделировали ситуацию следующим образом:
У вас есть идея, дать каждому мужчине набор простых правил, с помощью которых они смогут определить лучший, наиболее уникальный, цвет платьев для их пассий. У вас не так много времени, поэтому все мужчины будут действовать по одному и тому же алгоритму, придуманному вами. Из-за того что не каждый из мужчин использует компьютер, вам следует использовать очень простой язык для описания своего алгоритма. ЗаданиеНапишите алгоритм, который в случае удачного применения мужчинами, будет гарантировать, что несчастными после бала останутся как можно меньше женщин. Краткое описание языка, который вам следует использовать приведено ниже:
Алгоритм будет применяться каждым мужчиной города, каждый день. Более формально: в начале процесса все переменные будут иметь случайные значения. Каждое утро каждый мужчина присвоит 0 своим переменным l0,l1,...,l9. Точно в полдень каждая женщина придет за советом. Мужчина сделает все, что сможет, что бы помочь свое девушке: он просмотрит все правила сверху вниз и будет повторять процесс до тех пор, пока хотя бы один из IF возвращает true. (Однако, если ему прийдется делать это больше чем сто раз то он сдастся). Затем он скажет своей леди цвет, который он выбрал для неё. Каждый вечер мужчины встречаются в баре и когда им уже нечего обсуждать, они обмениваются информацией о том как их девушки им досаждают и какие значения a, b и color они им посоветовали сегодня. (Заметим так же что именно эти значения используют функции E_eq, min_ и max_ на следующий день.) Наконец, в день бала женщины одевают платья в соответствии с последним советом своих мужчин. И приходит время оценить эффективность предложенного вами алгоритма. (Это одна из тех задач, которая в случае плохого исполнения может привести к линчеванию программиста кровожадной толпой.) Начисление очковВсего на вход вашей программе будет подано 50 тестов. Используемые в тестах графы имеют не более 25 вершин. Общее количество очков, полученное за ваше решение, будет равно сумме очков за каждый отдельный тест. За каждый тест количество очков будет равно отношению количества правильно раскрашенных вершин (т.е. таких что 0<= color< nr и Eceq(color) равно false) к общему числу вершин в графе. Если все вершины раскрашены правильно, то дополнительно вы получите бонус равный 1/(1+ максимальный использованный цвет) очков. Программа получит статус Compilation Error, если она не будет корректно интерпретирована из-за синтаксических ошибок. Если в некоторый день правила для заданной вершины не смогут быть обработаны в течении 100 итераций или весь процесс моделирования займет более 60 секунд, то ваша программа получит статус Time Limit Exceeded. ПримерРешение следует отсылать на языке TEXT, программа судья обработает ваше решение. Ниже приведен пример простой программы состоящей из одного правила. Код: if (l0==0 and not Eceq ((color-1)%n)) then {color:=(color-1)%n; l0:=1;}; Очки: 5.491 |
||||
|