![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Vinchkovsky |
![]() ![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 98 Пол: Мужской Реальное имя: Andriy Репутация: ![]() ![]() ![]() |
Хех... А у вас, в России, задачи ИМХО намого легче, нежели у нас, на Украине. Учусь в 10 класе обычной провинциальной школы, на 2 этапе смог решить лишь одну задачу (хотя тогда, наверное, я знал несколько меньше, чем сейчас), а здесь сходу за пять минут накатал решение первой из предыдущего поста.
![]() program Zadacha1; В общем, можно сделать все намного изящнее (напр., процедуру проверки, есть ли "меньшее слово в старшем", сравнить слова и применить процедуру на меньшем), но, так как в задаче ничего не сказано, делал все по проще, так что не судите строго ![]() Ну а вот вторая: program Zadacha2; А это третья ![]() Это верно, что этих чисел Армстронга так немного? Например, при н=2 нуль, при н=3 четыре (153,370,371,407), при н=4 три, а при н=5 нуль? program zadaha3; Сообщение отредактировано: Vinchkovsky - 12.01.2007 10:21 |
![]() ![]() |
Айра |
![]()
Сообщение
#2
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: ![]() ![]() ![]() |
Цитата так что не судите строго Попробуй ввести в свою первую прогу "стст" и "стср" и посмотри, что она выдаст. Мне выдала "Mozhno". И в условии вроде не сказано, что слова не могут иметь одинаковое кол-во символов. Так что, как мне уже говорили: Цитата такие задачи в лоб не решаются ![]() ![]() |
Malice |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Хех... А у вас, в России, задачи ИМХО намого легче, нежели у нас, на Украине. Учусь в 10 класе обычной провинциальной школы, на 2 этапе смог решить лишь одну задачу (хотя тогда, наверное, я знал несколько меньше, чем сейчас), а здесь сходу за пять минут накатал решение первой из предыдущего поста. ![]() Не переживай, все равно не правильно накатал ![]() Попробуй 4-ую порешай, первые 3 решаются в уме.. Сообщение отредактировано: Malice - 10.01.2007 15:07 |
Michael_Rybak |
![]()
Сообщение
#4
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Хех... А у вас, в России, задачи ИМХО намого легче, нежели у нас, на Украине. Учусь в 10 класе обычной провинциальной школы, на 2 этапе смог решить лишь одну задачу Особенно смешно слово "намного". Ты ошибаешься. Задачи в России даже теоретически ничем не могут уступать задачам из Украины. Кроме того, второй этап - совсем уж не показатель, т.к. зачастую их составляют (а еще чаще - берут) совсем не те люди, которые состоят в комитете всероссийской/всеукраинской олимпиады. В одном и том же городе (я, в частности, про Киев) районные олимпиады могут проходить на разных задач в разных районах; в прошлом году районная соломенского района была сложнее городской, потому что отвечали за это совершенно некомпетентные люди - просто взяли городские прошлых лет, и повыбирали задачи, у которых балл повыше. P.S. В данном конкретном случае первые три действительно очень простые. А вот с четвертой (супер-решение которой, кстати, недавно показывал volvo) - похитрее. |
Vinchkovsky |
![]()
Сообщение
#5
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 98 Пол: Мужской Реальное имя: Andriy Репутация: ![]() ![]() ![]() |
Айра, Malice, ну я же написал, что для упрощения сделал по умолчанию первое слово больше второго:
Цитата В общем, можно сделать все намного изящнее (напр., процедуру проверки, есть ли "меньшее слово в старшем", сравнить слова и применить процедуру на меньшем), но, так как в задаче ничего не сказано, делал все по проще, так что не судите строго то есть, я показывал принцип, завтра поправлю и выложу полностью верное решение, если это принципиально. Ну а пока тестируйте при слово1>слово2. ![]() Цитата Попробуй 4-ую порешай, первые 3 решаются в уме.. Я про это и говорил! На российских олимпидах большинство задач решаються в уме, ИМХО, где-то выложу наши задачи, вот и сравните. У нас в уме решается только первая ![]() Michael_Rybak, у нас в городе (Львовской области) стабильно все задачи на одном уровне и тяжелее от этих. Да и во всей области задачи ОДИНАКОВЫЕ со всех олимпиад, и складает их какой-то институт ЛОИППО (что-то связано с последипломной учебой). Это все мое личное мнение. Если сделал поспешное заключение, сравнивая лишь одну рос.олимпиаду, то извините. Постараюсь выложить наши задачи, сравните. ![]() И я знаю про недоработки в своих задачах: громоздкий код, большее слово должно быть первым(з1), очень долго считает при н больше 7(з.3);извините, я это постараюсь исправить (задачи делал на скорую руку). ![]() to All - допустился досадной очепятки, вместо НАМОГО должно быть НЕМНОГО, а не намного (хотя последнее, в принципе, вернее) ![]() ____________________________________________________________________________ Вот к примеру вторая задача из четырех, 20 баллов (всего-130) Городок состоит из n домов, которые стоят вдоль прямого шоссе на одном расстоянии один от одного. В городке проводят телефонное подключение, в каждом доме нужно поставить k (0<=k<=30000). В первом рядке файла TEL.DAT содержится количество домов (1<=n<=1000). В следующем рядке через пропуск - количество телефонов, которые должы быть установлены в домах. Вывести на экран и в первый рядок файла TEL.SOL номер дома, в котором нужно поставить АТС, чтобы общее количество кабеля от каждого телефона к АТС было минимальным. Если таких домов несколько, то написать их в порядке увеличения черех пропуск. Каждый телефон соединен отдельным кабелем. Если телефон находится в том доме, что АТС, то считать, что кабеля не ведем. Пример входных данных: 5 1 2 3 2 1 Пример выходных данных: 3 _______________________________________________________________________ Может я и ошибаюсь, но как на меня, то это небо и земля в сравнении с вашей второй задачей ![]() Сообщение отредактировано: Vinchkovsky - 10.01.2007 18:28 |
мисс_граффити |
![]()
Сообщение
#6
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
а можно условия задач, код к которым содержится в первом сообщении?
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Michael_Rybak |
![]()
Сообщение
#7
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Цитата Michael_Rybak, у нас в городе (Львовской области) стабильно все задачи на одном уровне и тяжелее от этих. Да и во всей области задачи ОДИНАКОВЫЕ со всех олимпиад, и складает их какой-то институт ЛОИППО (что-то связано с последипломной учебой). Ну вот во львовской - так, а в других - по разному. Я думаю, что наиболее показательны городские/областные и всероссийские/всеукраинские. Кроме того, сложность, когда речь идет о задачах уровня IOI и выше, не самое ценное качество; главное, на мой взгляд, в задаче - свежесть, оригинальность. А сложность можно получать разными путями. Цитата Вот к примеру вторая задача из четырех, 20 баллов (всего-130) Городок состоит из n домов, которые стоят вдоль прямого шоссе на одном расстоянии один от одного. В городке проводят телефонное подключение, в каждом доме нужно поставить k (0<=k<=30000). В первом рядке файла TEL.DAT содержится количество домов (1<=n<=1000). В следующем рядке через пропуск - количество телефонов, которые должы быть установлены в домах. Вывести на экран и в первый рядок файла TEL.SOL номер дома, в котором нужно поставить АТС, чтобы общее количество кабеля от каждого телефона к АТС было минимальным. Если таких домов несколько, то написать их в порядке увеличения черех пропуск. Каждый телефон соединен отдельным кабелем. Если телефон находится в том доме, что АТС, то считать, что кабеля не ведем. Пример входных данных: 5 1 2 3 2 1 Пример выходных данных: 3 Цитата Может я и ошибаюсь, но как на меня, то это небо и земля в сравнении с вашей второй задачей ![]() Я бы сказал, трава и земля ;) Код-то (особенно учитывая, что O(N^2) должен проходить) ненамного длиннее будет, чем твоя program zadacha2. Даже короче, наверное. Как решать - знаешь? Цитата а можно условия задач, код к которым содержится в первом сообщении? Олимпиадные задачи. |
Vinchkovsky |
![]()
Сообщение
#8
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 98 Пол: Мужской Реальное имя: Andriy Репутация: ![]() ![]() ![]() |
to All, вы меня неверно поняли.
Я своими постами не создавал межнациональную неприязнь. Я просто указывал на своё мнение. Я не имел ввиду, что украинцам и мне в частности все задачки "по зубам" и я щелкаю даже самые сложные задачи. Скорее наоборот - я признал, что смог решить ТОЛЬКО ОДНУ ЗАДАЧУ из нашей олимпиады. Я не указываю на то, что крут, тем, что решил (и то криво!!!) 3 ваших задач. Последюю задачу, которую я запостил, не знаю, как решать. Кто увидел в моих постах неприязнь к россиянам, или то, что хвалюсь своей крутостью - если не трудно, очень прошу зацитировать. Не обращайте внимание на условное деление задач и олимпиад на "ВАШИ" и "НАШИ". Повторюсь, это условно, сделано без какого-либо намерения и не подчеркивает разность народов. Прошу извинить меня, если кто-то заметил двузначность в моих словах. Это значит, что вы меня не поняли; я не имел ввиду ничего плохого, и, собственно, такие слова принимайте в лучшей стороне. Прошу извинить меня за вынужденный оффтоп и не очень хороший русский. В принципе, "в кожній хаті-своя правда ![]() ![]() И вобще - я за "мир во всем мире" и равенство словянских народов, и если кто-то подумал совсем по-другому, прошу внимательно перечитать мои посты ![]() Michael_Rybak, если можешь, запости решение в топик с задачами (я про свою задачу) ![]() И ЕЩЕ-все решения - полностью и на 100% мои собственные, я не использовал материалы других сайтов или уже готовые решения. ![]() Сообщение отредактировано: Vinchkovsky - 10.01.2007 20:01 |
мисс_граффити |
![]()
Сообщение
#9
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Vinchkovsky, перебором можно решать.... но с учетом того, что работаем с файлами - это будет весьма медленно...
никаких ограничений по времени и памяти нет? -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Vinchkovsky |
![]()
Сообщение
#10
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 98 Пол: Мужской Реальное имя: Andriy Репутация: ![]() ![]() ![]() |
Ограничений нет никаких, в принципе, можно попробовать перебором
![]() Я не совсем понял это: особенно учитывая, что O(N^2) должен проходить??? |
мисс_граффити |
![]()
Сообщение
#11
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
так.... смотри:
если у нас телефоны распределены равномерно (ну например 2 2 2 2 2), то рационально размещать АТС по центру. В общем же случае это не так => надо искать "центр тяжести" системы... -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Michael_Rybak |
![]()
Сообщение
#12
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
to All, вы меня неверно поняли. Нет, это *ты* неправильно понял ![]() Цитата своими постами создавал межнациональную неприязнь. имел ввиду, что украинцам и мне в частности все задачки "по зубам" и я щелкаю даже самые сложные задачи. Я понял, что ты сравнил свою и эту районные олимпиады, и сказал что твоя сложнее. И рискнул обобщить до межнационального уровня - вот против этого я и возражал ![]() Цитата Скорее наоборот - я признал, что смог решить ТОЛЬКО ОДНУ ЗАДАЧУ из нашей олимпиады. Я не указываю на то, что крут, тем, что решил (и то криво!!!) 3 ваших задач. Последюю задачу, которую я запостил, не знаю, как решать. Кто увидел в моих постах неприязнь к россиянам, или то, что хвалюсь своей крутостью - если не трудно, очень прошу зацитировать. Не обращайте внимание на условное деление задач и олимпиад на "ВАШИ" и "НАШИ". Повторюсь, это условно, сделано без какого-либо намерения и не подчеркивает разность народов. Прошу извинить меня, если кто-то заметил двузначность в моих словах. Это значит, что вы меня не поняли; я не имел ввиду ничего плохого, и, собственно, такие слова принимайте в лучшей стороне. Прошу извинить меня за вынужденный оффтоп и не очень хороший русский. В принципе, "в кожній хаті-своя правда ![]() ![]() И вобще - я за "мир во всем мире" и равенство словянских народов, и если кто-то подумал совсем по-другому, прошу внимательно перечитать мои посты ![]() Не переймайся, брате ;) Цитата Я не совсем понял это: особенно учитывая, что O(N^2) должен проходить Это означает, что решение с временной оценкой O(N^2) должно набирать полный балл по этой задаче. Это следует из того, что n <= 1000. Вообще я не понимаю проблемы: спрашивают, Цитата номер дома, в котором нужно поставить АТС Всего домов n, а значит перебором можно решать.... Для каждого дома вычисляем общую длину кабеля и выбираем лучшие дома: (псевдопаскаль) ... Небольшая, но очень важная деталь: с таким выводом легко получить 0 баллов по задаче, потому что в условии сказано "написать их в порядке увеличения через пропуск", т.е. после последнего номера не нужно выводить пробел. Это вообще жутко юзаные грабли. Ну и другие тут грабли тоже скрыты - для теста n = 1000 и в каждом доме по 30000 ответ чуть-чуть вылазит за лонгинт. |
мисс_граффити |
![]()
Сообщение
#13
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Цитата т.е. после последнего номера не нужно выводить пробел. Собираем в строку, и перед выводом в файл удаляем последний пробел.... А вот со вторым хуже.... Но на 1000 домов это будет работать довольно долго (с учетом, что файл текстовый...) Попробую насчет центра тяжести додумать. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Michael_Rybak |
![]()
Сообщение
#14
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Цитата Собираем в строку, и перед выводом в файл удаляем последний пробел.... В общем случае так лучше не делать; 1) строки медленно собираются вроде бы (каждый раз строится новая строка), 2) сама конвертация время занимает. При больших данных и то и другое (особенно первое) критично. Проще с флагом: if not first then Write(' '); Write(i); first := false; Цитата А вот со вторым хуже.... Тоже ничего страшного; comp ведь никто не отменял. Цитата Но на 1000 домов это будет работать довольно долго (с учетом, что файл текстовый...) Так мы ж сначала массив заводим, а потом по нему бегаем. Быстро должно работать. Вообще задача решается за O(N), без внутреннего цикла - просто бежим сначала слева-направо, накапливая кабель, а потом справа-налево. Но здесь и N^2 покатит. |
Vinchkovsky |
![]()
Сообщение
#15
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 98 Пол: Мужской Реальное имя: Andriy Репутация: ![]() ![]() ![]() |
Нет, это *ты* неправильно понял ![]() Мне это приятно. Получается, только админ считает так и меня неверно понял ![]() Спасибо тебе и мисс_граффити за помощь в решении задачи ![]() ___________________________________ Чтобы не засорять форум и не создавать лишних тем, пару слов об следующей задаче: Цитата Задача 4. Числа от 1 до n расставлены по кругу. Вычеркиваем каждое второе число, начиная с 1. Написать программу, которая определит какое число останется последним и напечатает его. Исходное натуральное число - 1<n=<=1 000 000. Общий случай: определите количество шагов для произвольного числа. Например, н=7. Тогда что делаем - это: Цитата 1 2 3 4 5 6 7 2 4 6 6 2 (выделеная цифра, которая вычеркивается) или как? Тоесть, я прошу пример выводных данных (на верное решение не толкайте, хочу сам понять) ![]() |
Malice |
![]()
Сообщение
#16
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Нет, вот так:
Цитата 1 2 3 4 5 6 7 1 3 5 7 3 7 Ааа, пока тебе пример писал дошло как в 3 строки сделать ! Пойду попробую ![]() |
мисс_граффити |
![]()
Сообщение
#17
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Поиск->Казнь или Считалка.
Решалось на массивах. Если понимать "по кругу" буквально, надо делать циклический список... Но, имхо, если олимпиада школьная, это относится только к тому, как работать с данными (то есть после последнего переходить на первое.) Сообщение отредактировано: мисс_граффити - 11.01.2007 17:09 -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Vinchkovsky |
![]()
Сообщение
#18
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 98 Пол: Мужской Реальное имя: Andriy Репутация: ![]() ![]() ![]() |
Да я не хочу решение, а просто утачниваю условие задачи. Но все равно спасибо.
![]() Есть в общем идейка - написать процедуру смещения тех чисел, которые остаются, на места тех, которые будем стирать (в динамическом массиве, ведь n-потенциальное longint), а лишним елементам присуждаем "0". И собственно применять эту процедуру, пока не останется 1 символ, отличный от нуля. Только в процедуре надо сделать отдельно старт с нулевой ситуации (ведь стираем с единницы) и отдельно последующие операции, анализируя парность количества елементов, которые остались (тоесть, новых n). Уже большую половину реализовал, завтра буду доканчивать. ![]() |
мисс_граффити |
![]()
Сообщение
#19
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
если массив динамический, то зачем присваивать нули? удалять элементы...
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Malice |
![]()
Сообщение
#20
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Поиск->Казнь или Считалка. Решалось на массивах. Решение усложняется максимальным значением n=1 000 000. На на массивах тоже можно при желании. Допустим для того, чтобы знать вычеркнут/не вычеркнут достаточно 1-го бита, т.е. размер сокращается до 1000000/8 =125000. Пока еще не хватает. Но, учитывая, что при первом проходе быдут вычеркнуты все четные элементы, мы точно знаем, что младший бит=1 и его хранить не надо. Тогда размер массива сокращается до 125000/2 = 62500. Такой массив запросто организуется в tp. ![]() Кстати, на счет 3-х строк выше я погорячился слегка, вышло побольше, но не намного. Пока не выкладываю, чтоб не мешать.. ![]() Сообщение отредактировано: Malice - 12.01.2007 10:03 |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 1:34 |