1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| passat |
17.03.2009 10:14
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 32 Пол: Мужской Репутация: 0 |
В состязаниях участвуют N (N - до 100000) спортсменов. Каждому даются три попытки. Входной файл содержит 3 строки с положением участников в каждой попытке (ни в одной из попыток невозможно двум и более человекам разделить одно место).
Считается, что спортсмен A сильнее спортсмена B в случае, если A занял во всех попытках места выше, чем B. А является лучшим среди всех, если нет никого лучше его. Найти и вывести в выходной файл количество лучших спортсменов. Реализацию напишу сам, но подскажите алгоритм. Пока просматривается следующее. Поскольку раздел мест невозможен, то представляя лучшее и худшее место спортсмена во всех попытках как координаты отрезка, задача сводится к определению количества связных областей в начале координатной прямой. Т.е. реализация в самом общем виде что-то типа такого: - считать данные в массив, где каждому спортсмену отводится по 2 позиции: на первой лучшее место, на второй худшее место - с первой позицией связываем +1, со второй - -1 (можно использовать либо пару массивов, либо один, но с несколько более сложной структурой элементов - в принципе, это сейчас не интересует) - сортируем массив (второй - по результатам первого) - осталось посчитать сумму первых +/-1 до получения первого нуля. Количество +1 дает количество победителей. Особо смущает факт, что сортировка должна быть стабильной. А это сразу увеличивает время, особенно на больших количествах. Это наталкивает на грустную мысль, что само решение неверное. Подскажите, пожалуйста, правильный ли подход в принципе. Жаль тратить время на неправильное решение. |
![]() ![]() |
| TarasBer |
19.03.2009 13:05
Сообщение
#2
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Лучший - это не тот, который лучше всех остальных. Это тот, для которого нет никого лучше него.
Чувствуете разницу? То есть он лучше всех, с кем его можно сравнавить. А если его сравнивать ни с кем нельзя - значит нет никого лучше него. Значит он лучший. Что касается определений, то это 1 курс, дискретная математика, теория множеств. Например, на множестве из 5 элементов введём частичный порядок на графе так - один элемент считаем "больше" другого, если от первого ко второму можно провести путь, при движении по которому мы идём всё время вниз. На графе, изображённом на рисунке - элементы 1 и 2 максимальные, но не наибольшие. Элемент 5 - наименьший. И минимальный тоже, соответственно. В случае с 3 спортсменами мы имеем 3 несвязанных точки. Каждая из них, конечно же, максимальна и минимальна. Но не наибольшая и не наименьшая. > Или, на худой конец, приведите пример, где ответ 0 (не в моем понимании). > Или хотя бы 1. Ну, 2.. Но только не ВСЕ участники, как в этом примере. Ответ бывает 0 - только если спортсменов нет. В любом непустом конечном ЧУМе есть максимальный элемент. Один лучший спортсмен - это когда во всех состязаниях один и тот же победитель. Двое лучших - вот как я тут привёл. Сообщение отредактировано: TarasBer - 19.03.2009 13:17 Эскизы прикрепленных изображений -------------------- |
passat победитель 17.03.2009 10:14
maksimla если я правильно понял по строчкам
Считается, что... 17.03.2009 10:35
Lapp Найти и вывести в выходной файл количество лучших ... 17.03.2009 11:27
passat
Извиняюсь, но не вполне врубился в условие. Може... 17.03.2009 12:32
Lapp Тот, что есть, не помогает:
1 2 3
2 3 1
3 1 2
От... 18.03.2009 4:09
TarasBer По моему разумению, ответ к этим данным должен бы... 18.03.2009 15:37
Lapp У Частично Упорядоченного Множества (а мы имеем де... 19.03.2009 3:20
passat
Если я правильно понял, что вы имеете в виду, то ... 27.03.2009 20:17
TarasBer
Поняли, видимо, правильно.
В Вашем примере Вы отб... 29.03.2009 23:36
passat
А ну и что? Первый спортсмен - один из лучших, пр... 1.04.2009 15:48
maksimla мне тогда кажется надо все серавно слапить три рез... 18.03.2009 10:28
passat
Это было бы слишком просто. Непонятно, в чем смыс... 18.03.2009 12:25
Lapp А прояснить условие негде? 18.03.2009 13:06
passat К сожалению, нет.
Давайте исходить из того, что пр... 18.03.2009 14:13
volvo В таком случае, зачем проводятся соревнования? Поп... 19.03.2009 13:38
TarasBer
В таком случае, зачем проводятся соревнования? По... 19.03.2009 13:48
Lapp не верите, что он лучший - тогда назовите того, кт... 19.03.2009 14:12
TarasBer
O'kay, согласен. Возникла некоторая путаница... 19.03.2009 14:55
Archon Интересная задачка, правда явно олимпиадная, поэто... 2.04.2009 8:30
passat
Другой пример Lapp'а.
3 4 2 1
2 3 4 1
1 2 4 3... 3.04.2009 17:39![]() ![]() |
|
Текстовая версия | 9.12.2025 2:02 |