Задача 1. Кораблекрушение.
Задача имеет множество решений, но расскажу самое простое, которое видел.
Заводим структуру {строка,число} (pair<string,int> в С++), считываем данные в неё, преобразовывая ранк в приоритет. А дальше необходимое число раз, равное количеству приоритетов (у нас - 4), бежим по этому массиву и выводим те имена, которые имеют нужный сейчас приоритет.
Те участники, у которых задача получала неверный ответ на тесте 8, скорее всего не учитывали индексы в сортировке, т.е. использовал просто sort по рангу, вместо учитывания и индекса, либо вместо stable_sort.
Задача 2. Тренировки у поселенцев.
Заведем массив A размером k+1, где Ai - это число поселенцев с званием i. Далее пока не все поселенцы получили звание k (A[k] не равно n), моделируем процесс обучения и затем выводим количество монет.
Надо лишь не ошибиться, в том, чтобы обходить массив слева направо, хотя тест 2 из условия не дает нам совершить эту потенциальную ошибку.
Задача 3. Быки и коровы.
Заводим массив на 10000 элементов, помечаем все возможные в игре числа единицами. Дальше отсеиваем эти числа по входящим правилам, т.е. помечаем нулями оставшиеся числа из массива, при сравнении которых с ai не получается bi и ci быков и коров.
В итоге если помеченным числом будет только одно - выводим его, если несколько - недостаточно информации, если ни одного - данные некорректны.
Так же при выводе числа, необходимо не забыть про лидирующий ноль, если он необходим!
Задача 4. Раздел острова.
Основная сложность - сделать области связными.
Можно решить эту проблему так: заполняем наш остров змейкой, которая движется по столбцу вверх-вниз и меняет столбик при его заполнении. Начальная координата, либо (1,1) если A четно или B = 1, либо (B,1) если A нечетно и B > 1.
Задача имеет множество решений, но расскажу самое простое, которое видел.
Заводим структуру {строка,число} (pair<string,int> в С++), считываем данные в неё, преобразовывая ранк в приоритет. А дальше необходимое число раз, равное количеству приоритетов (у нас - 4), бежим по этому массиву и выводим те имена, которые имеют нужный сейчас приоритет.
Те участники, у которых задача получала неверный ответ на тесте 8, скорее всего не учитывали индексы в сортировке, т.е. использовал просто sort по рангу, вместо учитывания и индекса, либо вместо stable_sort.
Задача 2. Тренировки у поселенцев.
Заведем массив A размером k+1, где Ai - это число поселенцев с званием i. Далее пока не все поселенцы получили звание k (A[k] не равно n), моделируем процесс обучения и затем выводим количество монет.
Надо лишь не ошибиться, в том, чтобы обходить массив слева направо, хотя тест 2 из условия не дает нам совершить эту потенциальную ошибку.
Задача 3. Быки и коровы.
Заводим массив на 10000 элементов, помечаем все возможные в игре числа единицами. Дальше отсеиваем эти числа по входящим правилам, т.е. помечаем нулями оставшиеся числа из массива, при сравнении которых с ai не получается bi и ci быков и коров.
В итоге если помеченным числом будет только одно - выводим его, если несколько - недостаточно информации, если ни одного - данные некорректны.
Так же при выводе числа, необходимо не забыть про лидирующий ноль, если он необходим!
Задача 4. Раздел острова.
Основная сложность - сделать области связными.
Можно решить эту проблему так: заполняем наш остров змейкой, которая движется по столбцу вверх-вниз и меняет столбик при его заполнении. Начальная координата, либо (1,1) если A четно или B = 1, либо (B,1) если A нечетно и B > 1.
Все так и решал) Только 4 не успел реализовать.
А как пятая решается?
Напортачил, принял a+c<=50, а там же <=100. Вот и пролетел как фонера над Парижем.
P.S. Очень обидно.
динамику увидел и сдалторт выиграл, наверное он будет повкуснее говядины. :-)Код
да, для многих это было прициной не сдать эту задачу, даже для вас)
«Задачи были и так проще некуда.»
Сильно не ошибусь, если скажу, что во втором дивизионе места 67-383 решили не больше 2 задач.
За сим прекращаю отвечать на этот троллинг меня.)
- лучше 2 разбора, чем вообще ни одного.
- несколько разных идей на одну задачу лучше, чем одна или вообще ни одной.
К тому же писать хорошие разборы - это не задачки решать - уметь надо. :) Лично у меня проблемы возникают порою на словах объяснить своё решение.2) Даже если сказать по задаче особо нечего, можно пояснить какие-то тонкости наиболее короткой реализации или какие тесты могли бы быть полезны при тестировании подобного решения.
Что-то нигде в последнее время в разборах такого не видел.
3) Ну не решил кто-то задачу на контесте, а хочет сделать разбор. Так можно сесть, посмотреть чужие коды, понять решение, сдать его. А потом написать полный и хороший разбор.
Согласен, но можно во время контеста написать рабзор решенных задач, после окончания контеста понять как решаются остальные задачи и тогда уже дописать их.
4) Предварительно можно посмотреть нет ли уже готовых разборов.
Представьте себе, посмотрел, и их не было.
5) Чтобы разбор не стал бесполезным, туда можно добавить что-то, чего нет в других разборах (только не готовый код, его и так можно посмотреть).
Добавл перевод трёх задач на английский язык (разбор уже не бесполезен!). Четвёртую, а может и пятую допишу чуть попозже.
KhaustovPavel, спасибо за советы.
Подозреваю, что некоторые участники хотят узнать решения задач вот Сразу после конца соревнования, так как идей нет никаких и появляться они не хотят.
А будет авторский разбор или нет, кто ж знает? Неужели все контесты имеют разбор? Сомневаюсь.
Были убраны все "Я" из разбора и дополнено решение второй задачи, а ещё разбор был частично переведён на русский язык.