Алгоритмы(1657 задач)
Структуры данных(279 задач)
Интерактивные задачи(17 задач)
Другое(54 задач)
Вам нужно распилить деревянный брус на несколько кусков. Компания берет плату за пилку в зависимости от размера бруса, который нужно распилить. За разрезание бруса длиной l берется l у.е.
Легко понять, что различные заказы приводят к различным ценам. Найдите минимальную стоимость распила для любого бруса заданного размера.
В первой строке число L(1 ≤ L ≤ 1000) — начальная длина бруса, следующая строка содержит число распилов n(1 ≤ n ≤ 160), которые нужно сделать. Следующая строка содержит n положительных чисел (0 ≤ ci ≤ L) — места, в которых нужно сделать распилы.
Выведите минимальную стоимость распила.
10 3 2 4 7
20
100 3 25 50 75
200
Миша записывает 2 числа: n и m, а Маша должна разделить число n на m частей, не меняя порядок цифр, при этом Миша ещё требует, чтобы произведение полученных m чисел было максимально. Помогите Маше.
Входные данные содержат несколько тестовых случаев (не более 100000). Каждый тестовый случай расположен в отдельной строке и содержит 2 числа, разделённые пробелом: сначала n (1 ≤ n ≤ 1015), а потом m (
).
Для каждого тестового примера в отдельной строке выведите искомое максимальное произведение.
12345 2 12345 3
6170 2460
Вожди известного племени Мумба-Юмба решили придумать новый боевой вопль для своих воинов. При этом они решили, что вопль должен состоять ровно из N букв (всего в алфавите племени M букв). Также, после долгих исследований было выяснено, что если в вопле встречается слово si (слово это последовательность букв алфавита, не длиннее трех символов), то этот вопль вселяет во врага fi единиц страха. Если в вопль входит несколько слов, то их “страшность” суммируется. Например, если вопль содержит слова si и sj, то вопль вселяет fi+fj единиц страха.
Требуется по заданным N, M, алфавиту и списку слов si составить максимально страшный вопль.
В первой строке записано три числа — N, M и К (1 ≤ N ≤ 100, 1 ≤ M ≤ 24, 0 ≤ K ≤ 100), где K — количество страшных слов. В следующей строке записан алфавит — строка из M строчных латинских букв. Далее в K строках записана информация о словах — само слово и через пробел одно число, обозначающее страшность этого слова (1 ≤ fi ≤ 10000).
В выходной файл необходимо вывести страшность полученного вопля и на следующей строке — сам вопль.
3 5 4 abcde abc 10 ab 5 be 7 e 4
16 abe
Воодушевленный легендой о Вавилонской Башне, Петя решил построить ее аналог у себя в комнате, для этого он взял N детских строительных кирпичиков, выбрал для себя размер основания D и высоту башни H. Кроме того, он решил для себя, что размер каждого следующего уровня будет отличаться от предыдущего на один. Башня, показанная на рисунке, удовлетворяет Петиным запросам, имеет основание 2, высоту 8, и составлена из 22 кирпичиков.
Ваша задача состоит в том, чтобы написать программу, которая определяет, можно ли построить башню при выбранных Петей параметрах, и если да, то выдает сколько кирпичей должно быть на каждом уровне.
Во входном файле находятся числа N, D, и H (в таком порядке), разделенные пробелами (1 ≤ N ≤ 1 000, 1 ≤ D, H ≤ 30)
Если башня, удовлетворяющая Петиным запросам существует, выведите в выходной файл H чисел — проект любой такой башни — количество кирпичиков на каждом уровне, начиная с самого нижнего. В противном случае выведите 0.
22 2 8
2 3 4 3 4 3 2 1
6 3 2
0
Компания, производящая оборудование для сотовой связи, обратилась к вам с просьбой написать программу, оценивающую качество организации сети. Одним из важных параметров является то, пересекаются ли зоны покрытия передатчиков, работающих на одинаковых частотах. Для простоты будем считать, что область покрытия каждого передатчика представляет собой многоугольник на плоскости (не обязательно выпуклый). Две области покрытия будем считать пересекающимися, если у них есть хотя бы одна общая точка (возможно, лежащая на границе одной или даже обеих областей). Ваша программа должна принимать на вход набор пар многоугольников, описывающих зоны покрытия передатчиков, и выводить про каждую пару информацию о том, пересекаются ли эти зоны.
На первой строке входного файла находится число K — количество тестов во входном файле. Далее идёт описание K тестов. Каждый тест задаётся описанием двух многоугольников, которые надо проверить на пересечение. Каждый многоугольник задаётся в следующем формате: сначала указывается одно число Ni — число вершин этого многоугольника, — после чего идут Ni строк, каждая из которых содержит два разделённых пробелом числа xij и yij — координаты j-й вершины этого многоугольника. Вершины перечислены в порядке обхода многоугольника.
Число пар многоугольников в одном тесте 1 ≤ K ≤ 10, число вершин каждого многоугольника 3 ≤ Ni ≤ 100, координаты вершин — целые числа, - 10 000 ≤ xij, yij ≤ 10 000.
Для каждой пары многоугольников выведите в выходной файл на отдельной строке одно слово: "YES", если многоугольники пересекаются, и "NO", если нет.
2 3 0 0 -1 0 0 -1 3 1 1 2 1 1 2 4 0 0 2 0 2 2 0 2 4 1 1 3 1 3 3 1 3
NO YES