| Vladimir's profileImprove your skill © 200...BlogGuestbookNetwork | Help |
|
|
14 October Задача №6. О квартире Правила решения задач можно прочитать тут. О квартире. Диспетчер скорой помощи принял вызов. Он спросил адрес, номер квартиры, но забыл узнать номер подъезда и этаж. Эта информация ему необходима для того, чтобы врач быстрее добрался до больного. Диспетчер был опытный. Он вспомнил, что в этот дом уже были вызовы, в которых были указаны и номера квартир, и этажи, и подъезды. Помогите диспетчеру вычислить этаж и подъезд для квартиры N, если известно, что квартира с номером M в этом доме располагается в подъезде P (P > 1) на этаже K, а дом имеет L этажей, и на каждой площадке расположено одинаковое количество квартир. Входные данныеПервая строка входного
файла содержит целое число N (0 < N < 500)
— номер квартиры, откуда поступил вызов.Вторая строка состоит
из четырех целых чисел M, P, K, L, записанных
через пробел, обозначающих, соответственно,
номер квартиры, подъезд и этаж также
количество этажей в доме. Выходные данные Выходной файл состоит из одной строки, в которой через пробел записан номер подъезда и этаж для квартиры N. Если из входных данных нельзя узнать номер подъезда или этажа, то на соответствующем месте должна стоять строка 'UNK' Пример
28 September Задача №5. О выражении Правила решения задач можно прочитать тут. О выражении Условия
Входные данные Выходные данные Пример
03 September Задача № 4. О компьютерах.Правила решения задач можно прочитать тут. О компьютерах Ограничения Условия Входные данные Выходные данные Пример
01 September Задача №1: Потерянная лодка. Решение. Всем привет. Условия задачи можно найти тут. Файл с решением на C++ Решение Вся соль задачи - в ее ограничениях. Действительно, нельзя хранить названия всех лодок, потому что можно использовать всего лишь 16 Мб памяти. С другой стороны ограничение по времени в 2 секунды, за которое нельзя не только сравнить строки при помощи функции strcmp, но и просто считать файл. Когда я тестировал решения, то получил примерно такие результаты для считывания данных(тест был только один: 1000000 лодок с названиями в 20 символов длиной): fscanf - 4-5 сек. ifstream fout >> - 10 сек. ifstream fout.read(somestring, 100) - 1.5-1.6 сек. //этот вариант вполне подходит, правда нужно пробегать по строке и вытаскивать оттуда названия лодок, потому что точной длинны мы не знаем. Итак, со считывание разобрались, осталось сравнение строк. Заметим, что по условию названия всех лодок кроме одной встречаются по 2 раза, следовательно мы можем использовать свойство функции XOR. A ^ B ^ A = B. Т.е. делаем посимвольный xor названий, после этого мы получаем название нужной нам лодки. 28 August Задача №3. О гирях на весах.Итак, новая интересная задачка. Правила решения задач читаем тут.
О гирях на весах Ограничения
Дополнительно Можно присылать алгоритм. Правила решения задач.В общем решил правила вынести в отдельный пост. Итак.. О публикуемых задачах В данном блоге публикуются условия задач с различных олимпиад по программированию. Во всех задачах входные и выходные данные содержатся в файлах input.txt и output.txt соответственно. Некоторые задачи имеют ограничения по времени и памяти, которые нужно учитывать при решении. О решениях Решения присылать мне по адресу vvovas@rambler.ru. Убедительная просьба, в комментариях решения не публиковать. При нарушении этого правила никакие ваши решения данной задачи рассматриваться не будут В комментариях нужно объявлять о решении поучаствовать. Решения задач можно писать на языках c, c++, c#. Использование других языков лучше оговорить в комментариях. В некоторых случаях можно присылать просто описание алгоритма решения(это будет отмечено в условиях задачи). О результатах Результаты тестирования я буду писать в комментариях. Через некоторое время после публикации задачи(около недели) будет написан пост с описанием алгоритма решения и ссылкой на решение, которое показало лучшее время. О тестах К некоторым задачам у меня нет тестов, поэтому в условии будет пометка о том, что можно вместе с решением присылать тестовые данные, которые, по вашему мнению, смогут проверить правильность работы программы. 27 August Задача №2. Расставь коней.Всем привет. Вот нашел еще одну простенькую задачку. Правила по решению задач читать тут. Расставь коней Ограничения Временное ограничение: 1 сек. Условия Дана прямоугольная шахматная доска m на n клеток. Определить максимально возможное количество шахматных коней, которых можно расставить на доске, так чтобы они не били друг друга. Входные данные Строка содержит 2 натуральных числа M(2 <= M <= 10000), N(2 <= N <= 10000) Выходные данные Выводится максимальное число коней. Пример
Дополнительно Можно присылать алгоритм. 26 August Задача №1: Потерянная лодка.В свое время я долго ходил на воскресные тренировки по программированию в университете, а также участвовал в различных олимпиадах(вплоть до уровня России). В связи с этим, у меня осталась куча различных олимпиадных задач, которые я буду тут периодически выкладывать. Итак, вот условие задачи. Потерянная лодка. Ограничения Временное ограничение: 2 сек. Ограничение по памяти: 16 Мб Условия “Арагорн очень обрадовался лодкам, ибо он все еще не мог решить, по какому берегу вести Отряд. Остальные Хранители тоже приободрились. Впереди их ждали великие опасности, в этом ни один из них не сомневался; ну а все-таки плыть навстречу опасностям гораздо приятней, чем тащиться пешком. Всеобщей радости не разделял лишь Сэм: он был уверен, что речные лодки гораздо опаснее диких кобылиц (которых, как он думал, вообще не бывает).” Осторожный Сэм даже решил лично выбрать ту лодку, на которой поплывёт он. Сэм долго ходил по берегу, с недоверием изучая хрупкие на вид суда и аккуратно переписывая названия каждой из них. Последняя лодка ему понравилась больше... Он придирчиво её осмотрел, и решил, что если уж суждено плыть, то лучше на этой. Но вышла незадача — вечером Сэм понял, что как раз название этой лодки на радостях и не записал. Он вернулся на берег — и понял, что лодки уже как-то переставлены — правда, ни одна не исчезла и не появилась. Повторять розыски просто не было сил. “Садовая твоя голова, Сэм”, — ругался он на себя, но надо было что-то делать. Сэм переписал названия всех лодок, надеясь потом найти ту, которой нет в первом списке. Но беда не приходит одна — по дороге назад он умудрился перетасовать листы этих двух списков. Необходимо найти в получившемся большом списке выбранную лодку. Входные данные “Первая строка во входном файле содержит число N — количество лориэнских лодок на берегу Андуина (2 ≤ N ≤ 106). Далее следуют (2 * N – 1) названий лодок, разделённых пробелами или символами конца строки. Название может состоять не более чем из 20 заглавных или прописных латинских букв, а также цифр. Заглавные и прописные латинские буквы считать различными. Выходные данные В выходной файл необходимо вывести название выбранной Сэмом лодки. Пример
|
|
|