Алгоритмы(1657 задач)
Структуры данных(279 задач)
Интерактивные задачи(17 задач)
Другое(54 задач)
В городе N в ближайшее время состоится этап чемпионата мира по автогонкам среди автомобилей класса Формула-0. Поскольку специальный автодром для этих соревнований организаторы построить не успели, было решено организовать трассу на улицах города.
В городе N есть n перекрестков, некоторые пары которых соединены дорогами, движение по которым возможно в обоих направлениях. При этом любые два перекрестка соединены не более чем одной дорогой.
Трасса, на которой будут проводиться соревнования, должна быть круговой (т.е. должна начинаться и заканчиваться на одном и том же перекрестке), при этом в процессе движения по ней никакой перекресток не должен встречаться более одного раза.
На предварительном этапе подготовки оргкомитетом был создан список всех дорог города. Теперь настало время его использовать. Первый вопрос, который необходимо решить, – вопрос о существовании в городе требуемой круговой трассы (разумеется, если ответ будет отрицательным, организаторам придется в срочном порядке построить еще несколько дорог). Единственная проблема заключается в том, что у организаторов есть подозрение, что, поскольку список составлялся не очень внимательно, в нем некоторые дороги указаны больше одного раза.
Напишите программу, которая по заданному списку дорог города определит, возможна ли организация в городе требуемой круговой трассы.
Первая строка входного файла содержит два целых числа: n(1 ≤ n ≤ 1000) – количество перекрестков в городе N и m(0 ≤ m ≤ 100000) – количество дорог в составленном списке.
Последующие m строк описывают дороги. Каждая дорога описывается двумя числами: u и v (1 ≤ u, v ≤ n, u ≠ v) – номерами перекрестков, которые она соединяет. Так как дороги двусторонние, то пара чисел (u;v) и пара чисел (v;u) описывают одну и ту же дорогу.
В выходной файл выведите слово YES, если в городе возможно организовать крговую трассу для соревнований, и слово NO – в противном случае.
3 4 1 2 2 3 3 1 3 2
YES
2 3 1 2 2 1 2 1
NO
В стандартном поточике вводика или файлике inputik.txt ваша программочка найдёт строчечку из маленьких латинских буковок, которую мы назовём исходненькой. На следующей строчечке программочка найдёт числище N (1 ≤ N ≤ 1 000 000), а в следующих N строчечках — по словечку из тех же маленьких латинских буковок; эти словечки мы назовём словариком. Суммарненькая суммочка длиннищ словечек из словарика не превосходит 1 000 000
Ваша программочка должна вывести на стандартный поточичек выводика или в файлик outputik.txt N строчечек. В i-ой строчечке программочка должна вывести несколько чиселок: первое чиселко - количюсик (сколько штучечек) вхожденьечек строчечки i из словарика в исходненькой, затем через пробельчик для каждого вхожденьичка выведите индексики началиков всех вхожденьичек этой строчечки в исходненькую в отсортированном порядочке. Индексики всех строчечек начинаются с единичек. Няшечки-преподавашечки гарантируют, что колючюсик вхожденьичек не превосходит 1 000 000.
abracadabra
4
abra
ab
marazm
cadabra
2 1 8
2 1 8
0
1 5
Женя недавно купил себе новую соковыжималку. Теперь по утрам он и его братья и сестры пьют свежевыжатый фруктовый сок. А это, между прочим, очень полезно!
Недавно они поняли, что можно пить сок, выжатый не только из одного вида фруктов, как, например, апельсиновый, но и различные смеси, например, виноградно-яблочный.
В Жениной семье все очень любят сок, поэтому могут утром выпить не один стакан, причем разных видов сока. Например, его сестра Катя очень любит грейпфрутовый и апельсиновый соки. Женя, как наиболее технически грамотный человек, каждое утро занимается приготовлением соков.
Опишем подробнее, как работает соковыжималка. В нее загружаются фрукты, они проходят отжим в центрифуге, обезвоженная мякоть сбрасывается в отдельный резервуар, а сок попадает в специальную емкость.
Основная проблема состоит в том, что эту емкость иногда приходится мыть. Например, если после приготовления апельсинового сока, необходимо приготовить яблочный, то емкость надо мыть, иначе получится апельсиново-яблочный сок. Более формально, пусть сок A состоит из компонентов a1, ..., an, а сок B из компонентов b1, ..., bm. Сок B можно готовить после сока A, если любой из компонентов ai является компонентом сока B (т.е.
). В противном случае емкость для сока надо помыть.
Женя не очень любит мыть посуду, поэтому хочет мыть емкость как можно меньшее число раз. Помогите ему.
Первая строка входного файла содержит количество N различных соков, которые требуется приготовить (1 ≤ N ≤ 300). Каждая из последующих N строк описывает один из соков. Описание сока состоит из числа k его компонентов (1 ≤ k ≤ 300) и списка этих компонентов. Каждый из компонентов сока описывается словом длиной до 30 символов из строчных и прописных букв латинского алфавита. Прописные и строчные буквы различаются. Различные компоненты имеют различные названия.
В выходной файл выведите минимальное количество раз, которое Жене придется помыть емкость для сока. Учитывайте при этом, что емкость для сока надо помыть и после приготовления последней порции сока.
4 1 Apple 2 Apple Orange 1 Orange 2 Orange Pineapple
2
3 1 Apple 1 Orange 1 Mango
3
N гостей засиделись на даче и боятся опоздать на последнюю электричку. У хозяина дачи, который остается на ночь, есть автомобиль, но в него могут сесть одновременно не более 4 человек, не считая шофера. Скорость движения автомобиля по лесной дороге V км/ч, скорость движения пешехода U км/ч, расстояние от дачи до железнодорожной станции Z км, затратами времени на посадку-высадку пассажиров и разворот автомобиля можно пренебречь. За какое минимальное время все гости доберутся до станции?
В единственной строке заданы значения величин N, V, U и Z, разделенными одним или несколькими пробелами. Числа V, U и Z — положительные вещественные и не превосходят 100, (1 ≤ N ≤ 30).
Выведите искомое значение времени с точностью до 10 - 3.
8 30 5 15
1.0555555556
Рассмотрим произвольную последовательность целых чисел. Между числами можно расставить знаки арифметических операций + или , и таким образом получать некоторые выражения, которые принимают различные значения. Например, если взять последовательность: 17, 5, - 21, 15, то можно получить восемь различных выражений:
Назовем последовательность делящейся на натуральное K, если + и могут быть расставлены так, что итоговое значение выражения будет делиться на K. В приведенном примере последовательность делится на 7 (17 + 5 + - 21 - 15 = - 14), но не делится на 5.
|
17 |
+ |
5 |
+ |
-21 |
+ |
15 |
= |
16 |
|
17 |
+ |
5 |
+ |
-21 |
- |
15 |
= |
-14 |
|
17 |
+ |
5 |
- |
-21 |
+ |
15 |
= |
58 |
|
17 |
+ |
5 |
- |
-21 |
- |
15 |
= |
28 |
|
17 |
- |
5 |
+ |
-21 |
+ |
15 |
= |
6 |
|
17 |
- |
5 |
+ |
-21 |
- |
15 |
= |
-24 |
|
17 |
- |
5 |
- |
-21 |
+ |
15 |
= |
48 |
|
17 |
- |
5 |
- |
-21 |
- |
15 |
= |
18 |
Ваша задача — написать программу, определяющую делимость последовательности на целое число.
Первая строка содержит два натуральных числа N и K(1 ≤ N ≤ 10000, 2 ≤ K ≤ 100), разделенные пробелом. Вторая строка состоит из N целых чисел, разделенных пробелами. Все числа не превосходят 10000 по модулю.
Выведите в выходной файл "Divisible", если данная последовательность делится на K или "Not divisible", в противном случае.
4 7 17 5 -21 15
Divisible
4 5 17 5 -21 15
Not divisible