- •Тема: Перебор вариантов. Задача 1. Замечательные числа
- •Задача 2. Острова
- •Задача 3 Клавиатура
- •Задача 4 . Вырубка деревьев
- •Краткие методические рекомендации по решению задачи
- •Оценка решения
- •Формат входных данных
- •Формат выходных данных
- •Работа с большими числами
- •Золото племени абба
- •Сортировка и поиск
- •2. Домашнее задание.
- •Метод перебора вариантов, отсечения перебора
- •Сумма двух чисел
- •Элементы вычислительной геометрии
- •4. Две окружности
- •Эффективные структуры данных
- •5. Поиск прямоугольников (Время: 0,5 сек. Память: 16 Мб Сложность: 34%)
- •Тема 1: «Работа с длинными числами»
- •Тема 2: Алгоритмы поиска и сортировки
- •Тема 3: Аналитическая геометрия
- •Тема 4: Перебор вариантов
- •Тема 5: Строки. Элементы лексического и синтаксического разобра
- •Задача 3. "Функция"
- •Ограничения
- •Площади покрытия антенны
- •Площадь покрытия решение
- •Элементы лексического и синтаксического разбора Шифровка
- •Шифровка Решение
- •Сортировка и поиск Независимые судьи
- •Независимые судьи Решение
- •Сувениры
- •Сувениры Решение
- •Треугольник Условие задачи
- •Треугольник Решение
- •Олимпиадные задачи по информатике
- •Задача 1. «Код да Винчи»
- •Задача 3 «Буквы»
- •Задача 4 «Соревнования»
- •Задача «Красивая последовательность»
- •Тема: Задача на динамическое программирование
- •Динамическое программирование Задача: Черепашка
- •Решение
- •Тема: Работа с большими числами
- •Тема: Сортировка и выбор
- •Задача. Подземная дорога (поиск в ширину)
- •Формат входных данных
- •Задача rebus
- •Задача “Эчпочмаки”
- •Задача “Ниточка”
- •Задача “Обезьяны”
- •Задача Интересное число
Оценка решения
Если выходной файл не соответствует описанным требованиям – оценка 0. В противном случае, оценка будет вычислена по таблице 1 следующим образом: если найденная сумма – S, а минимальная сумма – Smin, то необходимо вычислить q=S/Smin и найти соответствующую оценку c в нижней строке.
q=S/Smin |
q=1.0 |
1.0<q≤1.1 |
1.1<q≤1.15 |
1.15<q≤1.2 |
1.2<q≤1.25 |
1.25<q≤1.3 |
1.3<q |
c |
10 |
5 |
4 |
3 |
2 |
1 |
0 |
Решение
Program POST;
const MaxN = 350;
var k, n, p: integer;
x: array [1..MaxN] of integer;
d, t: array [1..MaxN] of longint;
pr: array [1..MaxN, 1..35] of integer; {объявление массивов}
procedure ReadAll;{процедура связи с файлом вход. данных и записи в файл}
var i: integer;
begin
Assign(input, 'post.dat'); Reset(input);
Assign(output, 'post.sol'); Rewrite(output);
Read(n, p);
for i := 1 to n do read(x[i]); {цикл перебора элементов массива}
end;
procedure Solve; {основная процедура решения задачи}
var i, j, r, m: integer;
min, s: longint;
begin
fillchar(d, sizeof(d), 0); {заполняем строку нулями}
for i := 1 to n do begin
s := 0;
for j := 1 to i-1 do inc(s, longint(x[i])-longint(x[j]));{увеличиваем значение переменной s и преобразовываем элементы массива в длинное целое}
d[i] := s;
end;
for k := 2 to p do begin
for i := 1 to N do begin
t[i] := 1000000000;
r := i; {запись координат деревень }
s := 0;
for j := i-1 downto 1 do
begin
while (r > j) and (x[i]-x[r-1] < x[r-1]-x[j]) do begin {координаты почты }
dec(r);
s := s - (longint(x[r]) - longint(x[j+1])) +
(longint(x[i]) - longint(x[r]));
end;
inc(s, longint(r-j-1) * (longint(x[j+1])-longint(x[j])));
if s + d[j] < t[i] then begin
t[i] := s + d[j];
pr[i, k] := j;
end;
end;
end;
d := t;
end;
min := maxlongint;
for i := 1 to n do begin {вычисление минимального расстояния}
s := d[i];
for j := i+1 to n do inc(s, longint(x[j])-longint(x[i]));
if s < min then begin
min := s;
m := i;
end;
end;
writeln(min);
k := p;
while k > 0 do begin
d[k] := m;
m := pr[m, k];
dec(k);
end;
for i := 1 to p-1 do write(x[d[i]], ' ');
writeln(x[d[p]]);
end;
begin
ReadAll;
Solve;
end.
Тема: Работа с большими числами.
Задача 2: Светофоры
В подземелье M тоннелей и N перекрестков, каждый тоннель соединяет какие-то два перекрестка. Мышиный король решил поставить по светофору в каждом тоннеле перед каждым перекрестком. Напишите программу, которая посчитает, сколько светофоров должно быть установлено на каждом из перекрестков. Перекрестки пронумерованы числами от 1 до N.
