0

Имеется n прямоугольных конвертов

заведём числовую таблицу V того же размера, что и L. Значением каждого элемента V(i,j) таблицы будет минимально возможное количество шагов, которые ведут из комнаты (i0,j0) в комнату (i,j) в лабиринте. Сначала заполним таблицу V числами -1.

Установим номер очередного шага h:=0.

Присвоим элементу V(i0,j0) значение h.

Просматриваем клетки таблицы (i,j), в которых V(i,j)=h. По информации, содержащейся в L, заносим число h+1 во все клетки таблицы V, соответствующие комнатам смежным комнате (i,j), которые ещё содержат -1 (т.е ещё не проходились). После просмотра увеличиваем h на 1.

Обратный ход волнового алгоритма

Установим текущее положение i:=ik, j:=jk.

Используя информацию таблицы L, находим комнату, смежную комнате (i,j), в которой записано число h-1, и устанавливаем текущее положение, соответствующее найденной комнате. В зависимости от того, в какую сторону эта комната находится от предыдущей, выводим один из символов : "С", "Ю", "З" или "В".

Уменьшаем h на 1.

s:string; i0,j0,ik,jk,i,j,index,h:integer; l:array[1..50,1..50] of ROOM; v:array[1..50,1..50] of integer;

i0:=25; j0:=25; i:=i0; j:=j0;

for index:=1 to ord(s[0]) do

if s[index]=’C’ then

if s[index]=’Ю’ then

if s[index]=’З’ then

if s[index]=’В’ then

for i:=1 to 50 do

for j:=1 to 50 do

while v[ik,jk]=-1 do

for i:=1 to 50 do

for j:=1 to 50 do

if (l[i,j].N=1) and (v[i+1,j]=-1) then

if (l[i,j].S=1) and (v[i-1,j]=-1) then

if (l[i,j].W=1) and (v[i,j-1]=-1) then

if (l[i,j].E=1) and (v[i,j+1]=-1) then

if (i+1 0) and (v[i-1,j]=h-1) and (l[i,j].S=1)

end else if (j-1>0) and(v[i,j-1]=h-1) and (l[i,j].W=1)

begin Write(‘З’); j:=j-1;

Procedure Extract (var num : integer; var begin_qu : list);

Graf [num begin].num:= 1;

Add (num_begin, end_qu);

While flag and (not goal) do

Extract (num, beg_qu);

if a<>0 then begin

if beg_qu = end_qu then flag false

7.4.4 АЛГОРИТМ ДЕЙКСТРЫ

Данный алгоритм находит наименьшую суммарную весовую стоимость от первой вершины до всех вершин графа (ориентированный граф с неотрицательными весами) за время О(N 2 ).

– в процееса алгоритма некоторые города будут выделенными () в начале – только город 1, в конце – все);

– для каждого выделенного города I хранится наименьшая стоимость пути 1à I, при этом известно, что минимум достигается на пути, проходящем только через выделенные города;

– для каждого невыделенного города I хранится наименьшая стоимость путь 1à I, в котором в качестве промежуточных используются только выделенные города.

При выборе пути от вершины к вершине алгоритм действует «жадным» способом: выбирает выодящее ребро с наименьшим (наибольшим) весом.

На рисунке указаны стоимости ребер и порядок их обхода.

var a:array [1..n] of sp;

b:array [1..n] of integer;

c:array [1..n] of boolean;

Procedure Add(var g:sp;i,den:integer);

while z^.next<>nil do

if (x<>0) and (y<>0) then add(a[ver],x,y);

ставим очень большое число>

if (a[i]^.nom=0) and (a[i]^.st=0) and (a[i]^.next=nil) then

if c[i]=true then Begin Proverka:=true; exit; end;

if (m>b[i]) and (c[i]<>false) then Begin m:=b[i];nomer:=i;;end;

if srav(a[u]^.nom,a[u]^.st,u) then

ЗАДАЧИ ДЛЯ САМОСТОЯТЕЛЬНОЙ РЕАЛИЗАЦИИ УЧАЩИМИСЯ:

Найти кратчайшее расстояние между двумя заданнымивершинами в графе. Найти все возможные пути между этими двумя вершинами.

Лабиринт задается матрицей смежности N*N, где C(i,j)=1, если узел i связан узлом j посредством дороги. Часть узлов назначается входами, часть – выходами. Входы и выходы задаются последовательностями узлов X(1). X(p) и Y(1). Y(k) соответственно.

Найти максимальное число людей, которых можно провести от входов до выходов таким образом, чтобы:

а) их пути не пересекались по дорогам, но могли пересекаться по узлам;

б) их пути не пересекались по узлам;

N шестеpенок пpонумеpованы от 1 до N (N =K.

В заданном графе необходимо определить, существует ли цикл, проходящий по каждому ребру графа ровно один раз.

Имеется N городов. Для каждой пары городов (I,J) можно построить дорогу, соединяющую эти два города и не заходящие в другие города. Стоимость такой дороги A(I,J). Вне городов дороги не пересекаются.

Написать алгоритм для нахождения самой дешевой системы дорог, позволяющей попасть из любого города в любой другой. Результаты задавать таблицей B[1:N,1:N], где B[I,J]=1 тогда и только тогда, когда дорогу, соединяющую города I и J, следует строить.

В картинной галерее каждый сторож работает в течение некоторого непрерывного отрезка времени. Расписанием стражи называется множество пар [Т1(i), Т2(i)] – моментов начала и конца дежурства i-го сторожа из интервала [0,EndTime].

Для заданного расписания стражи требуется:

(а) проверить, в любой ли момент в галерее находится не менее двух сторожей.

Если условие (а) не выполнено, то:

(б) перечислить все интервалы времени с недостаточной охраной (менее 2 сторожей).

(в) добавить наименьшее число сторожей с заданной, одинаковой для всех длительностью дежурства, чтобы получить правильное расписание (т.е. удовлетворяющее условию (а)).

(г) проверить, можно ли обойтись без добавления новых сторожей, если разрешается сдвигать времена дежурства каждого из сторожей с сохранением длительности дежурства.

(д) Если это возможно, то составить расписание с наименьшим числом сдвигов.

Вводится N – количество домов и К – количество дорог. Дома пронумерованы от 1 до N. Каждая дорога определяется тройкой чисел – двумя номерами домов – концов дороги и длиной дороги. В каждом доме живет по одному человеку. Найти точку – место встречи всех людей, от которой суммарное расстояние до всех домов будет минимальным.

Если точка лежит на доpоге, то указать номера домов – концов этой доpоги и расстояние от первого из этих домов. Если точка совпадает с домом, то указать номер этого дома.

Примечание: длины дорог – положительные целые числа.

N колец сцеплены между собой (задана матрица A(n*n), A(i,j)=1в случае, если кольца i и j сцеплены друг с другом и A(i,j)=0 иначе). Удалить минимальное количество колец так, чтобы получилась цепочка.

Янка положил на стол N выпуклых K-гранников и N различных типов наклеек по K штук каждая. Ночью кто-то наклеил наклейки на грани, по одной на грань. Помогите Янке расставить многогранники так, чтобы наклейка

каждого типа была видна pовно K-1 раз.

Имеется N точек и M проводков. Проводком можно соединить некоторую пару различных точек, причем пара может быть соединена не более чем одним проводком. Все проводки должны быть использованы.

Пусть Di – количество проводков, которые будут соединены с точкой с номером i, i=1, . N.

Необходимо соединить N точек с помощью M проводков таким образом, чтобы сумма S=D1*D1 + D2*D2 + . + Dn*Dn была максимальной.

Вывести величины Di в неубывающем порядке и. по требованию (priznak=1), список соединений.

N (N M (M Di в неубывающем порядке.

Задано N городов c номерами от 1 до N и сеть из M дорог с односторонним движением между ними. Каждая дорога задается тройкой (i, j, k), где i – номер города, в котором дорога начинается, j – номер города, в котором дорога заканчивается, а k – ее длина (число k – натуральное). Дороги друг с другом могут пересекаться только в концевых городах.

Все пути между двумя указанными городами A и B можно упорядочить в список по неубыванию их длин (если есть несколько путей одинаковой длины, то выбираем один из них). Необходимо найти один из путей, который может быть вторым в списке.

Вывести его длину L и города, через которые он проходит.

Задача 17. Ларсона

Пусть G – конечный неориентированный связный граф. Предположим, что он представляет собой систему тоннелей, в которых может прятаться беглец. Группа из S полицейских, двигаясь по туннелям, стремится схватить этого беглеца, который может двигаться с любой скоростью, стремясь избежать поимки. Требуется определить минимальное количество полицейских S, гарантирующих поимку беглеца.

Часто в задачах встречается следующая конструкция – есть дома и дороги, их соединяющие; у каждой дороги есть длина. По другой терминологии такая конструкция называется графом, дома называются "вершинами", дороги – "ребрами" или "дугами", а длина дороги "весом ребра" или "весом дуги". Таким образом фраза ‘Найти минимальный вес пути между вершинами s и k в графе’ может быть переведена так: ‘Есть дома и дороги их соединяющие. Также заданы длины дорог. Найти кратчайшую длину пути от города s до города k, если двигаться можно только по дорогам’. Пропускная способность дуги (i,j) означает, например, сколько груза может быть перевезено по дороге (по дуге) (i,j) за единицу времени); а поток по дуге (i,j) — это сколько перевозится сейчас на самом деле).

Читайте также:  Безопасная проверка пароля spa

Часто используют следующие обозначения: Г(x(i))- множество вершин, в которые есть дуга из вершины i; Д(x(i))- множество вершин, из которых есть дуга в вершину i.

Пусть в графе N вершин.

Длины дуг обычно заносятся в матрицу (назовем ее C) размера N на N, называемой матрицей смежности:

var С: array [1..N,1..N] of integer;

Элемент C[i,j] этой матрицы равен длине дуги (дороги>), соединяющей вершины i и j, и равен (например) 0 или -1, если такой дуги нет. Если дорога двунаправленная (дуга неориентированная), то очевидно, что C[i,j]=C[j,i].

Алгоритм расстановки пометок для задачи о максимальном (от s к t) потоке.

А. Расстановка пометок. Вершина может находиться в одном из трех состояний: вершине приписана пометка и вершина просмотрена ( т.е. она имеет пометку и все смежные с ней вершины "обработаны"), пометка приписана, но вершина не просмотрена ( т.е. она имеет пометку, но не все смежные с ней вершины обработаны), вершина не имеет пометки. Пометка произвольной вершины x(i) состоит из двух частей и имеет один из двух видов: (+x(j),m) или (-x(j),m). Часть +x(j) пометки первого типа означает, что поток допускает увеличение вдоль дуги (x(j),x(i)). Часть -x(j) пометки другого типа означает, что поток может быть уменьшен вдоль дуги (x(i),x(j)). В обоих случаях m задает максимальную величину дополнительного потока, который может протекать от s к x(i) вдоль построенной увеличивающей цепи потока. Присвоение пометки вершине x(i) соответствует нахождению увеличивающей цепи потока от s к x(i). Сначала все вершины не имеют пометок.

  • Шаг 1. Присвоить вершине s пометку (+s,m(s)=бесконечность). Вершине s присвоена пометка и она просмотрена, все остальные вершины без пометок.
  • Шаг 2. Взять некоторую непросмотренную вершину с пометкой; пусть ее пометка будет (+-x(k),m(x(i))) (+- обозначает, что перед x(k) может стоять как плюс, так и минус).

(I) Каждой помеченной вершине x(j), принадлежащей Г(x(i)), для которой c(i,j) 0, присвоить пометку (-x(i),m(x(j))), где

(Теперь вершина x(i) и помечена, и просмотрена, а вершины x(j), пометки которым присвоены в (I) и (II), являются непросмотренными.) Обозначить каким-либо способом, что вершина x(i) просмотрена.

  • Шаг 3. Повторять шаг 2 до тех пор, пока либо вершина t будет помечена, и тогда перейти к шагу 4, либо t будет не помечена и никаких других пометок нельзя будет расставить; в этом случае алгоритм заканчивает работу с максимальным вектором потока c. Здесь следует отметить, что если X(0)-множество помеченных вершин, а X'(0) – множество не помеченных, то ( X(0) –> X'(0) ) является минимальным разрезом.

Б. Увеличение потока.

  • Шаг 4. Положить x=t и перейти к шагу 5.
  • Шаг 5. (I) Если пометка в вершине x имеет вид (+z,m(x)), то изменить поток вдоль дуги (z,x) c c(z,x) на c(z,x)+m(t). (II) Если пометка в вершине x имеет вид (-x,z) c c(x,z) на c(x,z)-m(t).
  • Шаг 6. Если z=s, то стереть все пометки и вернуться к шагу 1, чтобы начать расставлять пометки, но используя уже улучшенный поток, найденный на шаге 5. Если z<>s, то взять x=z и вернуть к шагу 5.

Обозначения: Г(x(i))- множество вершин, в которые есть дуга из вершины i; Д(x(i))- множество вершин, из которых есть дуга в вершину i; c(i,j) – это пропускная способность дуги (т.е., например, сколько груза может быть перевезено по дороге (по дуге) (i,j) за единицу времени); q(i,j) – поток по дуге (i,j) (т.е. сколько перевозится сейчас на самом деле).

Кратчайшее расстояние от вершины нач до остальных вершин.

C[i,j]- длина ребра(i,j), С[i,j]>=0 (если ребра нет, то его длина полагается равной бесконечности).

D[i]- кратчайшее текущее расстояние от вершины нач до вершины i.

флаг[i]- информация о просмотре вершины i: 0 – если вершина не просмотрена, 1 – если просмотрена. Если вершина просмотрена, то для нее D[i] есть наикратчайшее расстояние от вершины нач до вершины i.

предок[i]- информация о номере вершины, предшествующей вершине i в кратчайшем пути от вершины нач.

минрас – это минимальное расстояние.

Задан набор неповторяющихся пар (A i ,A j ), A i , A j принадлежат множеству А=. Необходимо составить цепочку максимальной длины по правилу

(A i ,A j )+(A j ,Ak)=(A i ,A j ,A k ).

При образовании этой цепочки любая пара может быть использована не более одного раза.

Между N пунктами (N

1) при заданных N,M и сети дорог единичной длины (все имеющиеся A(i,j)=1) определяет минимальное время, через которое может произойти встреча всех M роботов, при этом начальное положение роботов и скорость их движения известны.

2) Выполнить те же действия, что и в п. 1, но только для различных значений A(i,j).

Примечание: В случае невозможности встречи всех M роботов в одном месте ни в какой момент времени в результате выполнения программы должно быть сформировано соответствующее сообщение.

Требование к вводу-выводу:

1) Все входные данные – целые неотрицательные числа;

2) при задании сети дорог должно быть указано количество дорог – K и пункты их начала и конца в виде пар (i,j).

На плоскости расположено N точек. Имеется робот, который двигается следующим образом. Стартуя с некоторой начальной точки и имея некоторое начальное направление, робот движется до первой встреченной на его пути точки, изменяя в ней свое текущее направление на 90 градусов, т.е. поворачивая налево или направо. После этого он продолжает движение аналогично. Если робот достиг начальной точки, либо не может достичь новой точки (которую он еще не посещал), то он останавливается.

Определить, может ли робот посетить все N точек, если:

  1. Определены начальные точка и направление робота.
  2. Определена начальная точка, а направление робота можно выбирать.
  3. Начальную точку и направление робота можно выбирать.

Координаты точек – целые числа, угол измеряется в радианах относительно оси ОХ.

Найти кратчайшее расстояние между двумя вершинами в графе. Найти все возможные пути между этими двумя вершинами в графе не пеpесекающиеся по

Лабиринт задается матрицей смежности N*N, где C(i,j)=1, если узел i связан узлом j посредством дороги. Часть узлов назначается входами, часть – выходами. Входы и выходы задаются последовательностями узлов X(1). X(p) и Y(1). Y(k) соответственно.

Найти максимальное число людей, которых можно провести от

входов до выходов таким образом, чтобы:

а) их пути не пересекались по дорогам, но могут пеpесекаться по узлам;

б) их пути не пересекались по узлам;

N шестеpенок пpонумеpованы от 1 до N (N

На фигуре 1.показана вычислительная система, содержащая достаточное количество процессоров, использующих общую память из 26 числовых переменных A,B,C. Z. Система работает шагами. На каждом шаге, каждый процессор выполняет либо оператор присваивания либо пустой оператор. Оператор присваивания – это конструкция вида

где арифметическое выражение без скобок и содержит не более 2 переменных и арифметические операции. Процессоры вычисляют выражения и присваивают их значения переменным из левых частей операторов, а потом приступают к следующим операторам (при том одновременно). Не допускается одновременное выполнение 2 или больше операторов присваивания с одинаковой левой частью. Пустой оператор обозначаем символом &. Выполняя его, процессор простаивает 1 шаг.

n последовательности операторов (присваивания или пустых) с одинаковой длиной L называем n-программой с длиной L (выполняется за L шагов на первых n процессоров), если на каждом шаге имеем не более 1 оператора с заданной левой частью. n-программы P и Q называем эквивалентными, если начиная с одного и того же начального состояния переменных A,B. Z после выполнения как P, так и Q получается одинаковый результат.

Напишите программу, которая:

Задание 1. Вводит целое k(k

Имеется N прямоугольных конвертов и N прямоугольных открыток различных размеров. Можно ли разложить все открытки по конвертам, чтобы в каждом конверте было по одной открытке.

Замечание. Открытки нельзя складывать, сгибать и т.п., но можно помещать в конверт под углом. Например, открытка с размерами сторон 5:1 помещается в конверты с размерами 5:1, 6:3, 4.3:4.3, но не входит в конверты с размерами 4:1, 10:0.5, 4.2:4.2.

Составить программу для нахождения произвольного разбиения 20 студентов на 2 команды, численность которых отличается не более чем в 2 раза, если известно, что в любой команде должны быть студенты, обязательно знакомые друг с другом. Круг знакомств задается матрицей (20,20) с элементами

Читайте также:  Вирус плей маркет на андроиде

Имеется N человек и прямоугольная таблица А[1:N,1:N];элемент A[i,j] равен 1, если человек i знаком с человеком j, А[i,j] = =А[j,i]. Можно ли разбить людей на 2 группы, чтобы в каждой группе были только незнакомые люди.

На олимпиаду прибыло N человек. Некоторые из них знакомы между собой. Можно ли опосредованно перезнакомить их всех между собой? (Незнакомые люди могут познакомиться только через общего знакомого).

Пусть группа состоит из N человек. В ней каждый имеет (N/2) друзей и не больше K врагов. У одного из них есть книга, которую все хотели бы прочитать и потом обсудить с некоторыми из остальных.

Написать программу, которая:

1. Находит способ передачи книги таким образом, чтобы она побывала у каждого в точности один раз, переходя только от друга к другу и наконец возвратилась к своему владельцу.

2.Разбивает людей на S групп, где будет обсуждаться книга, таким образом, чтобы вместе с каждым человеком в ту же самую группу вошло не более P его врагов.

Примечание: предполагается, что S*P>=K.

В заданном графе необходимо определить, существует ли цикл, проходящий по каждому ребру графа ровно один раз.

Следующая фигура показывает запутанную сеть дорог района города. Представьте, что мусорная машина должна пройти по всем дорогам хотя бы один раз, чтобы собрать мусор. Число на каждой стороне показывает время, которое должна потратить мусорная машина, чтобы проехать этот интервал. На перекрестках машина должна ждать время, равное числу пересекающихся дорог.

Составьте программу, показывающую как выбрать необходимый путь для сбора мусора в кратчайшее время.

Есть 11 остановок.

от 1 до 2 путь 10 мин.

N pазличных станков один за дpугим объединены в конвейеp. Имеется N pабочих. Задана матpица C[N , N], где C[i,j] пpоизводительность i-ого pабочего на j-ом станке. Опpеделить

а) на каком станке должен pаботать каждый из pабочих, чтобы пpоизводительность была максимальной.

б) то же, но станки pасположены паpаллельно и выполняют одноpодные опеpации.

На плоскости задан граф с N вершинами. Количество ребер, соединенных с каждой вершиной, равно 3.

Пусть вершины X,Y и Z являются соседями вершины Т. Будем считать, что Y левый, а Z -правый сосед вершины Т относительно вершины X, если ориентированный угол XTZ меньше ориентированного угла XTY (положительным будем считать направление против часовой стрелки). Например вершина Е является правым соседом вершины Н относительно А, а G – левым, поскольку ориентированный угол АНЕ меньше ориентированного угла AHG. (Ребра считаются отрезками).

Составьте программу, которая:

1. Вводит координаты вершин графа и его ребра и рисует граф на экране компьютера, производя при этом подходящее масштабирование(Ребра выводятся как отрезки).

2. Пусть заданы две начальные соседние вершины X 0 и X 1 и последовательность вида LLRRL. Тогда программа находит путь на графе X 0 X 1 X 2 . X n для вершин которого выполнено:

-первые два являются заданными X 0 и X 1

-X i+1 является левым или правым соседом X i относительно X i-1 в зависимости от заданной последовательности, при том L означает левый, а R -правый.

Пример:В заданном графе пусть даны начальные вершины А и H и последовательность LRRLLR. Тогда программа должна найти путь AHGFEDCB.

3. Рисует на экране путь, найденный в п.2.

4. Пусть даны начальная и конечная вершина. Программа должна найти путь, проходящий через минимальное число вершин, вывести его на экран и найти 2 первые вершины и управляющую последовательность для этого пути, как определено в п.2.

Имеется N городов. Для каждой пары городов (I,J) можно построить дорогу, соединяющую эти два города и не заходящие в другие города. Стоимость такой дороги A(I,J). Вне городов дороги не пересекаются.

Написать алгоритм для нахождения самой дешевой системы дорог, позволяющей попасть из любого города в любой другой. Результаты задавать таблицей B[1:N,1:N], где B[I,J]=1 тогда и только тогда, когда дорогу, соединяющую города I и J, следует строить.

В картинной галерее каждый сторож работает в течение некоторого непрерывного отрезка времени. Расписанием стражи называется множество пар [Т 1 (i), Т 2 (i)] – моментов начала и конца дежурства i-го сторожа из интервала [0,EndTime].

Для заданного расписания стражи требуется:

(а) проверить, в любой ли момент в галерее находится не менее двух сторожей.

Если условие (а) не выполнено, то:

(б) перечислить все интервалы времени с недостаточной охраной (менее 2 сторожей).

(в) добавить наименьшее число сторожей с заданной, одинаковой для всех длительностью дежурства, чтобы получить правильное расписание (т.е. удовлетворяющее условию (а)).

(г) проверить, можно ли обойтись без добавления новых сторожей, если разрешается сдвигать времена дежурства каждого из сторожей с сохранением длительности дежурства.

(д) Если это возможно, то составить расписание с наименьшим числом сдвигов.

(Все моменты времени задаются в целых минутах.)

EndTime – момент окончания стражи, т.е. охраняется отрезок времени [0, EndTime].

N -число сторожей.

T 1 [i], T 2 [i], i=1. N – моменты начала и окончания дежурства i-го сторожа.

Length – длительность дежурства каждого дополнительного сторожа.

(1) Ответ на пункт (а) в форме да/нет.

(2) При ответе "нет" на п. (а) – список пар (k,l) – начал и концов всех малоохраняемых интервалов с указанием числа сторожей в каждом (0 или 1).

(3) Число дополнительных сторожей и моменты начала и окончания дежурства каждого дополнительного сторожа.

(4) Ответ на пункт (г) в форме да/нет. Если "да", то номера сторожей, смена которых сдвигается, и значения сдвигов.

(5) В ответ на пункт (д): наименьшее число сторожей, смена которых сдвигается, их номера и значения сдвигов.

Программа должна допускать независимое тестирование пунктов (в), (г), (д).

Вводится N – количество домов и К – количество дорог. Дома пронумерованы от 1 до N. Каждая дорога определяется тройкой чисел – двумя номерами домов – концов дороги и длиной дороги. В каждом доме

живет по одному человеку. Найти точку – место встречи всех людей, от которой суммарное расстояние до всех домов будет минимальным.

Если точка лежит на доpоге, то указать номера домов – концов этой доpоги и расстояние от первого из этих домов. Если точка совпадает с домом, то указать номер этого дома.

Примечание: длины дорог – положительные целые числа.

N колец сцеплены между собой (задана матрица A(n*n), A(i,j)=1 в случае, если кольца i и j сцеплены друг с другом и A(i,j)=0 иначе). Удалить минимальное количество колец так, чтобы получилась цепочка.

Янка положил на стол N выпуклых K-гранников и N различных типов наклеек по K штук каждая. Ночью кто-то наклеил наклейки на грани, по одной на грань.

Помогите Янке расставить многогранники так, чтобы наклейка каждого типа была видна pовно K-1 раз.

Имеется N точек и M проводков. Проводком можно соединить некоторую пару различных точек, причем пара может быть соединена не более чем одним проводком. Все проводки должны быть использованы.

Пусть D i – количество проводков, которые будут соединены с точкой с номером i, i=1, . N.

Необходимо соединить N точек с помощью M проводков таким образом, чтобы сумма S=D 1 *D 1 + D 2 *D 2 + . + D n *D n была максимальной.

Вывести величины D i в неубывающем порядке и. по требованию

(priznak=1), список соединений.

ВВОД:
N (N M (M D i в неубывающем порядке.
S

список точек
.
список точек

Задано N городов c номерами от 1 до N и сеть из M дорог с односторонним движением между ними. Каждая дорога задается тройкой (i, j, k), где i – номер города, в котором дорога начинается, j –

номер города, в котором дорога заканчивается, а k – ее длина (число k – натуральное). Дороги друг с другом могут пересекаться только в концевых городах.

Все пути между двумя указанными городами A и B можно упорядочить в список по неубыванию их длин (если есть несколько путей одинаковой длины, то выбираем один из них). Необходимо найти один из путей, который может быть вторым в списке.

Вывести его длину L и города, через которые он проходит.
ВВОД:
N M
i 1 , j 1 , k 1
.
i M , j M , k M
A, B
ВЫВОД:

или
A, i 1 , i 2 , . B
L

Задача 1.
Задан набор неповторяющихся пар (Ai,Aj), Ai, Aj принадлежат множеству А=. Необходимо составить цепочку максимальной длины по правилу (Ai,Aj)+(Aj,Ak)=(Ai,Aj,Ak).
При образовании этой цепочки любая пара может быть использована не более одного раза.

Читайте также:  Дарк соулс prepare to die edition

Задача 2.
Между N пунктами (N =K.

Задача 13.
В заданном графе необходимо определить, существует ли цикл, проходящий по каждому ребру графа ровно один раз.

Задача 14.
Следующая фигура показывает запутанную сеть дорог района города. Представьте, что мусорная машина должна пройти по всем дорогам хотя бы один раз, чтобы собрать мусор. Число на каждой стороне показывает время, которое должна потратить мусорная машина, чтобы проехать этот интервал. На перекрестках машина должна ждать время, равное числу пересекающихся дорог.
Составьте программу, показывающую как выбрать необходимый путь для сбора мусора в кратчайшее время.

Есть 11 остановок.

от 1 до 2 путь 10 мин.
от 1 до 3 4
от 1 до 4 8
от 2 до 3 8
от 2 до 5 6
от 3 до 4 4
от 3 до 5 7
от 4 до 7 7
от 4 до 6 10
от 4 до 8 7
от 8 до 6 7
от 8 до 10 6
от 10 до 6 11
от 6 до 9 4
от 10 до 9 12
от 6 до 11 5
от 6 до 4 8
от 5 до 4 8
от 4 до 11 13
от 9 до 11 5

Задача 15.
N pазличных станков один за дpугим объединены в конвейеp. Имеется N pабочих. Задана матpица C[N , N], где C[i,j] пpоизводи-
тельность i-ого pабочего на j-ом станке. Опpеделить

а) на каком станке должен pаботать каждый из pабочих, чтобы пpоизводительность была максимальной.
б) то же, но станки pасположены паpаллельно и выполняют одноpодные опеpации.

Задача 16.
На плоскости задан граф с N вершинами. Количество ребер, соединенных с каждой вершиной, равно 3.

Пусть вершины X,Y и Z являются соседями вершины Т. Будем считать, что Y левый, а Z -правый сосед вершины Т относительно вершины X, если ориентированный угол XTZ меньше ориентированного угла XTY (положительным будем считать направление против часовой стрелки). Например вершина Е является правым соседом вершины Н относительно А, а G – левым, поскольку ориентированный угол АНЕ меньше ориентированного угла AHG. (Ребра считаются отрезками).
Составьте программу, которая:

1. Вводит координаты вершин графа и его ребра и рисует граф на экране компьютера,производя при этом подходящее масштабирование (Ребра выводятся как отрезки).
2. Пусть заданы две начальные соседние вершины XO и X1 и последовательность вида LLRRL. Тогда программа находит путь на графе XOX1X2. Xn для вершин которого выполнено:
-первые два являются заданными XO и X1
-Xi+1 является левым или правым соседом Xi относительно Xi-1 в зависимости от заданной последовательности,при том L означает левый, а R -правый.
Пример: В заданном графе пусть даны начальные вершины А и H и последовательность LRRLLR. Тогда программа должна найти путь AHGFEDCB.
3. Рисует на экране путь,найденный в п.2.
4. Пусть даны начальная и конечная вершина. Программа должна найти путь,проходящий через минимальное число вершин, вывести его на экран и найти 2 первые вершины и управляющую последовательность для этого пути, как определено в п.2.

Задача 17.
Имеется N городов. Для каждой пары городов (I,J) можно построить дорогу, соединяющую эти два города и не заходящие в другие города. Стоимость такой дороги A(I,J). Вне городов дороги не пересекаются.
Написать алгоритм для нахождения самой дешевой системы дорог, позволяющей попасть из любого города в любой другой. Результаты задавать таблицей B[1:N,1:N], где B[I,J]=1 тогда и только тогда, когда дорогу, соединяющую города I и J, следует строить.

Задача 18.
В картинной галерее каждый сторож работает в течение некоторого непрерывного отрезка времени. Расписанием стражи называется множество пар [Т1(i), Т2(i)] – моментов начала и конца дежурства i-го сторожа из интервала [0,EndTime].
Для заданного расписания стражи требуется:
(а) проверить, в любой ли момент в галерее находится не менее двух сторожей.
Если условие (а) не выполнено, то:
(б) перечислить все интервалы времени с недостаточной охраной (менее 2 сторожей).
(в) добавить наименьшее число сторожей с заданной, одинаковой для всех длительностью дежурства, чтобы получить правильное расписание (т.е. удовлетворяющее условию (а)).
(г) проверить, можно ли обойтись без добавления новых сторожей, если разрешается сдвигать времена дежурства каждого из сторожей с сохранением длительности дежурства.
(д) Если это возможно, то составить расписание с наименьшим числом сдвигов.
ВХОДНЫЕ ДАННЫЕ:
(Все моменты времени задаются в целых минутах.)
EndTime – момент окончания стражи, т.е. охраняется отрезок времени
[0, EndTime].
N – число сторожей.
T1[i], T2[i], i=1. N – моменты начала и окончания дежурства i-го сторожа.
Length – длительность дежурства каждого дополнительного сторожа.

ВЫХОДНЫЕ ДАННЫЕ:
(1) Ответ на пункт (а) в форме да/нет.
(2) При ответе "нет" на п. (а) – список пар (k,l) – начал и концов всех малоохраняемых интервалов с указанием числа сторожей в
каждом (0 или 1).
(3) Число дополнительных сторожей и моменты начала и окончания дежурства каждого дополнительного сторожа.
(4) Ответ на пункт (г) в форме да/нет. Если "да", то номера сторожей, смена которых сдвигается, и значения сдвигов.
(5) В ответ на пункт (д): наименьшее число сторожей, смена которых сдвигается, их номера и значения сдвигов.

ПРИМЕЧАНИЕ
Программа должна допускать независимое тестирование пунктов (в), (г), (д).

Задача 19.
Вводится N – количество домов и К – количество дорог. Дома пронумерованы от 1 до N. Каждая дорога определяется тройкой чисел – двумя номерами домов – концов дороги и длиной дороги. В каждом доме живет по одному человеку. Найти точку – место встречи всех людей, от которой суммарное расстояние до всех домов будет минимальным.
Если точка лежит на доpоге, то указать номера домов – концов этой доpоги и расстояние от первого из этих домов. Если точка совпадает с домом, то указать номер этого дома. Примечание: длины дорог – положительные целые числа.

Задача 20.
N колец сцеплены между собой (задана матрица A(n*n), A(i,j)=1 в случае, если кольца i и j сцеплены друг с другом и A(i,j)=0 иначе). Удалить минимальное количество колец так, чтобы получилась цепочка.

Задача 21.
Янка положил на стол N выпуклых K-гранников и N различных типов наклеек по K штук каждая. Ночью кто-то наклеил наклейки на грани, по одной на грань. Помогите Янке расставить многогранники так, чтобы наклейка каждого типа была видна pовно K-1 раз.

Задача 22.
Имеется N точек и M проводков. Проводком можно соединить некоторую пару различных точек, причем пара может быть соединена не более чем одним проводком. Все проводки должны быть использованы.
Пусть Di – количество проводков, которые будут соединены с точкой с номером i, i=1, . N.
Необходимо соединить N точек с помощью M проводков таким образом, чтобы сумма S=D1*D1 + D2*D2 + . + Dn*Dn была максимальной.
Вывести величины Di в неубывающем порядке и. по требованию (priznak=1), список соединений.

ВВОД:
N (N M (M Di в неубывающем порядке.
S

список точек
.
список точек

Задача 23.
Задано N городов c номерами от 1 до N и сеть из M дорог с односторонним движением между ними. Каждая дорога задается тройкой (i, j, k), где i – номер города, в котором дорога начинается, j – номер города, в котором дорога заканчивается, а k – ее длина
(число k – натуральное). Дороги друг с другом могут пересекаться только в концевых городах.
Все пути между двумя указанными городами A и B можно упорядочить в список по неубыванию их длин (если есть несколько путей одинаковой длины, то выбираем один из них). Необходимо найти один из путей, который может быть вторым в списке.
Вывести его длину L и города, через которые он проходит.

ВВОД:
N
M
i1, j1, k1
.
iM, jM, kM
A, B
ВЫВОД:

или
A, i1, i2, . B
L

Задача 24.
Задача Ларсона (1982 РЖМат 11В682) Пусть G – конечный неориентированный связный граф. Предположим, что он представляет собой систему тоннелей, в которых может прятаться беглец. Группа из S полицейских, двигаясь по туннелям,
стремится схватить этого беглеца, который может двигаться с любой скоростью, стремясь избежать поимки. Требуется определить минимальное количество полицейских S, гарантирующих поимку беглеца.

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *