|
Лекции по структурам и алгоритмам обработки данных (СиАОД) 1913.5. Диспетчер процессов (5) В любой момент времени операционная система может исполнять произвольное количество независимых процессов, и время, за которое каждый процесс будет выполнен, не зависит от того, сколько процессов выполнялось одновременно с ним. Однако одновременно могут выполняться только независимые процессы. В некоторых случаях процесс A может использовать данные, полученные процессом B (и произвольным количеством других процессов). Тогда к моменту старта процесса A все процессы, от которых он зависит, уже должны отработать. По времени исполнения нескольких процессов и таблице зависимости между этими процессами нужно вычислить время исполнения заданной группы процессов. Ввод из файла INPUT.TXT. В первой строке находится число N (2 N 20) — количество процессов, которые нужно выполнить. Во второй строке через пробел записаны N чисел от 1 до 1000; i-е число - это время в миллисекундах, требуемое для исполнения i-го процесса. Далее идут N строк, описывающих зависимости между процессами. В каждой из них находятся по N символов 'Y' и 'N' (заглавных латинских букв). Символ 'Y' в i-й из этих строк на j-м месте означает, что для запуска i-го процесса требуется завершить j-й. Символ 'N' означает, что i-й процесс не зависит от j-го напрямую. Вывод в файл OUTPUT.TXT.В единственной строке вывести минимальное время в миллисекундах, требуемое для выполнения всех процессов, или –1, если при заданной таблице зависимостей группу процессов нельзя выполнить. Примеры Ввод 1 Ввод 2
Вывод 1 Вывод 2 500 -1
При высадке на Марс было основано N поселений. Каждое из них равномерно расширялось во все стороны на L марсианских миль в месяц. Постепенно поселения начали сливаться друг с другом, получая общее название. Какое минимальное время с момента высадки потребуется для того, чтобы на Марсе осталось не более K поселений? Ввод из файла INPUT.TXT. В первой строке задаются через пробел три целых положительных значения: начальное количество поселений N (1 ≤ N ≤ 1000), число K (1 ≤ K ≤ 10, K< N) и скорость роста поселений L (1 ≤ L ≤ 100). Далее в следующих N строках содержатся через пробел целые координаты поселений Xi , Yi (-1000 ≤ Xi , Yi ≤ 1000) в марсианских милях. Вывод в файл OUTPUT.TXT.В единственной строке вывести с точностью до 2 знаков минимальное время в месяцах с момента высадки, необходимое для того, чтобы в результате слияния осталось не более K поселений. Ограничения. Время работы на одном тесте до 2 с. Объем используемой памяти: 64 мегабайта. Пример Ввод 3 2 1 -1 1 2 1 2 5 Вывод
13.7. Шпионские страсти (9) Резидент разведки руководит сетью секретных агентов, контактируя только с некоторыми из них. Каждый агент имеет право передавать информацию определенному кругу других агентов. Множество тех партнеров, которым агент передает сведения, не обязано совпадать с множеством принимающих от него информацию агентов. Полученные данные могут распространяться далее и, в конечном счете, доставляются резиденту. Резидент оплачивает каждую передачу сведений от одного агента другому. Величина оплаты зависит от пары агентов и от того, кто из них принимает информацию. Таким образом, общая оплата доставки информации зависит только от цепочки агентов, участвующих в доставке, и действующих расценок. Стало известно, что определенный агент добыл ценные секретные сведения. В целях надежности резидент решил получить информацию по двум независимым каналам, то есть через разных агентов. Требуется найти минимальный размер затрат резидента для оплаты передачи информации по двум цепочкам агентов, которые начинаются с удачливого агента и заканчиваются резидентом, не пересекаясь друг с другом. Ввод из файла INPUT.TXT. Первая строка содержит три целых положительных числа N, A и B, разделённых пробелом: N – количество агентов, включая резидента, A – номер начального агента, а B – номер конечного агента, то есть резидента. Далее следуют N строк, описывающих связи агентов в виде матрицы стоимости Cij. В i-й строке задаются через пробел стоимости передачи информации от агента с номером i агентам с номерами 1, 2, …, N соответственно в виде целых положительных чисел, то есть значения Ci1, Ci2,…, CiN. Бесплатной передачи информации между агентами не существует. Если i-й агент не связан с j-м, то в соответствующем месте ставится 0. Связи каждого агента с самим собой заполняются нулями, то есть главная диагональ матрицы стоимостей состоит из нулей. Ограничения: N ≤ 50, 0 ≤ Cij ≤ 10000, время 2 с. Вывод в файл OUTPUT.TXT. В единственной строке выводится минимальная суммарная стоимость передачи информации по двум непересекающимся цепочкам агентов. Если таких цепочек не находится, в файл OUTPUT.TXT выводится строка со словом No.
4 1 4 4 1 3 0 2 3 9 0 5 2 0 1 0 0 6 2 0 4 7 1 2 0 5 0 1 0 0 0 0 0 0 3 7 0 0
16 No
Учебный план включает перечень дисциплин. Задан список пар дисциплин. Отдельная пара показывает, что вторая дисциплина должна изучаться после первой. Составить список дисциплин учебного плана в порядке их изучения. В том случае, когда задание некорректно, т.е. в списке пар имеются циклы, выдать хотя бы один из них. Ввод из файла INPUT.TXT. В первой строке задается число пар дисциплин N (1 ≤ N ≤ 300). В каждой из следующих N строк указываются через пробел два натуральных числа Xi , Yi (Xi , Yi ≤ 1000), определяющих номера дисциплин. Первая дисциплина должна изучаться раньше второй. Вывод в файл OUTPUT.TXT. В первой строке вывести Yes либо No – возможность расположения в списке дисциплин в порядке их изучения. При наличии такой возможности во второй строке выводится через пробел искомый список. Если задание некорректно, т.е. имеется цикл, то во второй строке выдается список номеров, образующих цикл. Первый и последний номера в этом списке должны совпадать.
7 8 1 2 1 2 1 3 1 3 2 5 2 5 3 4 3 4 4 2 4 2 3 2 3 2 6 4 6 4
Полигон для тренировки морских десантников представляет собой площадку в форме прямоугольника с водоемами и задается матрицей размером M x N. Каждый элемент матрицы содержит либо символ '@', обозначающий участок водной поверхности, либо символ '.' (точка), обозначающий участок суши. Подразделение морских дьяволов находится в клетке, соответствующей левому верхнему углу матрицы. Ему поставлена задача достичь участка, соответствующего правому нижнему углу матрицы. Десантники могут передвигаться в направлениях вдоль сторон полигона, не выходя за его пределы. Они планируют преодолеть как можно меньше клеток, занятых водой. Если это можно сделать по-разному, то предпочтительнее такой вариант, когда путь включает меньшее количество клеток суши. Ввод из файла INPUT.TXT. В первой строке содержатся числа M и N (1 M, N 50), разделенные пробелами. В следующих M строках находится матрица, представляющая полигон, по N подряд идущих символов в строке. Гарантируется, что левый верхний и правый нижний углы матрицы соответствуют участкам суши. Вывод в файл OUTPUT.TXT. В единственной строке вывести через пробел наименьшее число клеток K, которое подразделение должно преодолеть по воде, и для найденного значения K минимальное число клеток по суше L, включая начальную и конечную клетки.
Ввод 1 Ввод 2 7 7 7 6 ..@@... .@@@.. ..@@@.. ...... @.@@..@ @.@@.@ @@@...@ @@@..@ ..@.... ..@... ..@...@ ..@... ....@.. ....@. Вывод 1 Вывод 2 1 14 0 12
Некоторое предприятие выпускает двигатели для автомобилей. Двигатель состоит ровно из n деталей, пронумерованных от 1 до n, при этом деталь с номером i изготавливается за pi секунд. Специфика предприятия заключается в том, что одновременно может изготавливаться лишь одна деталь двигателя. Для производства некоторых деталей необходимо иметь предварительно изготовленный набор других деталей. Генеральный директор поставил перед предприятием задачу: за наименьшее время изготовить деталь с номером 1, чтобы представить ее на выставке. Требуется написать программу, которая по заданным зависимостям порядка производства между деталями найдет наименьшее время, за которое можно произвести деталь с номером 1. Ввод из файла INPUT.TXT. Первая строка содержит число n (1 ≤ n ≤ 100000) – количество деталей двигателя. Вторая строка содержит n натуральных чисел p1, p2 … pn , определяющих время изготовления каждой детали в секундах. Время для изготовления каждой детали не превосходит 109 секунд. Каждая из последующих n строк входного файла описывает характеристики производства деталей. Здесь i-ая строка содержит число деталей ki, которые требуются для производства детали с номером i, а также их номера. Сумма всех чисел ki не превосходит 200000. Известно, что не существует циклических зависимостей в производстве деталей. Вывод в файл OUTPUT.TXT. В первой строке выходного файла должны содержаться два числа: минимальное время (в секундах), необходимое для скорейшего производства детали с номером 1 и число k деталей, которые необходимо для этого произвести. Во второй строке требуется вывести через пробел k чисел – номера деталей в том порядке, в котором следует их производить для скорейшего производства детали с номером 1.
|
Loading
|