|
ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
|
Подтемы:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Страница: << 50 51 52 53 54 55 56 >> [Всего задач: 277]
Базовые типы данных Имеются несколько базовых типов данных: Integer, Char, Boolean и String. Константы этих типов записываются следующим образом. Константа типа String – это последовательность (длиной от 0 до 255) символов, заключенная либо в апострофы (▓), либо в двойные кавычки ("). При этом, если ограничители – апострофы, то внутри них апостроф удваивается, а кавычка нет. Аналогично, внутри кавычек двойная кавычка удваивается, а апостроф нет. В качестве символов будут использоваться ASCII-символы с кодами от 32 до 255. Единственная допустимая операция над строками – конкатенация (+). Константа типа Char – это константа типа String длины 1. Определена
операция Ord(<символ>), возвращающая ASCII-код заданного символа
Константы типа Boolean могут иметь только два значения: True и False. Над ними определены операции Or (или), And (и), Not (не). Кроме того, над всеми базовыми типами определены операции сравнения
(<, >, =, <=, >=, <>), которые возвращают результат типа Boolean. При этом
False < True.
Здесь:
1. <имя типа> – это идентификатор типа, который может быть определен как
до, так и после данного описания.
2. <перечислимый тип> ::= (<идентификатор 0> {,<идентификатор i>})
(i = 1, ..., N)
Возможны следующие операции над константами перечислимого типа:
Здесь <значение 1> и <значение 2> – константы одинакового типа, который
может быть одним из следующих: Integer, Char, Boolean, либо каким-то из
<перечислимых типов>. Если <значение 1> ? <значение 2>, то константы
<ограниченного типа> могут принимать любое значение из промежутка
[<значение 1>, <значение 2>]. Иначе множество констант этого типа пусто.
Над константами <ограниченного типа> допустимы те же операции, что и
над константами того типа, которому принадлежат <значение 1> и <значение
2>.
Константами <типа-последовательности>, описанного как Sequence Of <тип>, являются конечные последовательности констант типа <тип>. Константами <типа-последовательности>, описанного как Sequence (<поле> {, <поле>}), являются упорядоченные наборы из констант указанных типов (в том порядке, в котором они встречаются в описании). Однако при этом можно опускать те элементы, перед типами которых указано ключевое слово Optional. Константы <типа-последовательности> записываются следующим образом: {<Константа> {, <Константа>}}. Пустая последовательность обозначается символами { }. Над <типами-последовательностями> определена операция конкатенации <тип 1>@<тип 2>, результатом которой является новый тип, все константы которого получаются дописыванием к произвольной константе-последовательности <типа 1> справа константы-последовательности <типа 2>. К образованным таким способом новым типам опять можно применять операцию конкатенации. Аналогично, операция конкатенации определена и для констант
рассматриваемых типов. Кроме того, если для констант каждого из типов из
Константами <типа-множества>, описанного как Set Of <тип>, являются конечные множества констант указанного типа <тип>. В случае описания Multi Set Of <тип> это будут конечные мультимножества (т.е. множества, в которых элементы могут повторяться более одного раза). Константами <типа-множества>, описанного как Set (<тип> {, <тип>}) являются конечные мультимножества, полученные взятием произвольных констант указанных в описании типов (по одной константе каждого типа с учетом кратности). Константы <типа-множества> записываются следующим образом: {<Константа> {, <Константа>}}. Пустое множество обозначается символами { }. Над <типами-множествами> возможны следующие операции
(результатом которых является, как легко заметить, опять некоторый <тип-множество>): Plus (объединение), Minus (разность), Mul (пересечение).
Например, константы типа A Mul B – это те (мульти-) множества, которые
одновременно являются константами типа A и константами типа B. Эти же
операции определены (с учетом кратности элементов) и для констант <типов-множеств>. Например, {1, 2, 2} Minus {2, 3} = {1, 2}, {3, 3, 5} Mul {3, 5, 5} =
{3, 5}.
Определения этих операций см. выше.
Комментарий – это последовательность символов любой длины,
начинающаяся с символов // и заканчивающаяся символами перевода строки.
Комментарии могут располагаться в любом месте программы и должны
опускаться при разборе.
В городе Н при невыясненных обстоятельствах территория одного из заводов превратилась в аномальную зону. Все подъезды к территории были перекрыты, а сама она получила название промзоны. В промзоне находятся N зданий, некоторые из них соединены дорогами. По любой дороге можно перемещаться в обоих направлениях. Начинающий сталкер получил задание добраться до склада в промзоне. Он нашел в электронном архиве несколько карт территории промзоны. Так как карты составлялись разными людьми, то на каждой из них есть информация только о некоторых дорогах промзоны. Одна и та же дорога может присутствовать на нескольких картах. В пути сталкер может загружать из архива на мобильный телефон по одной карте. При загрузке новой карты предыдущая в памяти телефона не сохраняется. Сталкер может перемещаться лишь по дорогам, отмеченным на карте, загруженной на данный момент. Каждая загрузка карты стоит 1 рубль. Для минимизации расходов сталкеру нужно выбрать такой маршрут, чтобы как можно меньшее число раз загружать карты. Сталкер может загружать одну и ту же карту несколько раз, при этом придется заплатить за каждую загрузку. Изначально в памяти мобильного телефона нет никакой карты. Требуется написать программу, которая вычисляет минимальную сумму расходов, необходимую сталкеру, чтобы добраться от входа в промзону до склада. Формат входных данных В первой строке входного файла находятся два натуральных числа N и K (2 ≤ N ≤ 2000; 1 ≤ K ≤ 2000) - количество зданий промзоны и количество карт соответственно. Вход в промзону находится в здании с номером 1, а склад - в здании с номером N. В последующих строках находится информация об имеющихся картах. Первая строка описания i-ой карты содержит число ri - количество дорог, обозначенных на i-ой карте. Затем идут ri строк, содержащие по два натуральных числа a и b (1 ≤ a, b ≤ N; a ≠ b), означающих наличие на i-ой карте дороги, соединяющей здания a и b. Суммарное количество дорог, обозначенных на всех картах, не превышает 300 000 (r1 + r2 + ... + rK ≤ 300 000). Формат выходных данных В выходной файл необходимо вывести одно число - минимальную сумму расходов сталкера. В случае, если до склада добраться невозможно, выведите число -1. Примеры
Вновь открытое казино предложило оригинальную игру. В начале игры крупье выставляет в ряд несколько фишек разных цветов. Кроме того, он объявляет, какие последовательности фишек игрок может забирать себе в процессе игры. Далее игрок забирает себе одну из заранее объявленных последовательностей фишек, расположенных подряд. После этого крупье сдвигает оставшиеся фишки, убирая разрыв. Затем игрок снова забирает себе одну из объявленных последовательностей и так далее. Игра продолжается до тех пор, пока игрок может забирать фишки. Рассмотрим пример. Пусть на столе выставлен ряд фишек rrrgggbbb, и крупье объявил последовательности rg и gb. Игрок, например, может забрать фишки rg, лежащие на третьем и четвёртом местах слева. После этого крупье сдвинет фишки, и на столе получится ряд rrggbbb. Ещё дважды забрав фишки rg, игрок добьётся того, что на столе останутся фишки bbb и игра закончится, так как игроку больше нечего забрать со стола. Игрок мог бы действовать и по-другому - на втором и третьем ходах забрать не последовательности rg, а последовательности gb. Тогда на столе остались бы фишки rrb. Аналогично, игрок мог бы добиться того, чтобы в конце остались ряды rrr или rbb. После окончания игры полученные фишки игрок меняет на деньги. Цена фишки зависит от её цвета. Требуется написать программу, определяющую максимальную сумму, которую сможет получить игрок. Формат входных данных В первой строке входного файла записано число K (1 ≤ K ≤ 26) - количество цветов фишек. Каждая из следующих K строк начинается со строчной латинской буквы, обозначающей цвет. Далее в той же строке через пробел следует целое число Xi (1 ≤ Xi ≤ 150, i = 1..K) - цена фишки соответствующего цвета. В (K+2)-ой строке описан ряд фишек, лежащих на столе в начале игры. Ряд задается L строчными латинскими буквами (1 ≤ L ≤ 150), которые обозначают цвета фишек ряда. В следующей строке содержится число N (1 ≤ N ≤ 150) - количество последовательностей, которые были объявлены крупье. В следующих N строках записаны эти последовательности. Гарантируется, что сумма длин этих N строк не превосходит 150 символов, и все они непустые. Формат выходных данных В выходной файл выведите единственное целое число - максимальную сумму денег, которую может получить игрок. Пример
Царь пообещал награду тому, кто сможет на каменистом пустыре посадить красивый фруктовый сад. Об этом узнали два брата. Старший смог выкопать 18 ям (см. рис. слева). Больше нигде не удалось, только все лопаты сломал. Царь рассердился и посадил его в темницу. Тогда младший брат Иван предложил разместить яблони, груши и сливы в вершинах равных треугольников (см. рис. справа), а остальные ямы засыпать.
Назовём девятизначное число красивым, если все его цифры различны.
Страница: << 50 51 52 53 54 55 56 >> [Всего задач: 277] |
|
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|
|