Gampr's blog

By Gampr, 12 years ago, In Russian

Хотелось бы узнать как решаются некоторые из задач. Олимпиада прошла, помогите пожалуйста. Задачи B и C. Условия задач под катом .

Воздушные шарики(Задача B)

Ограничение по времени 1 сек.

Ограничение по памяти 64 Мб.

У Маши день рождения. Паша решил сделать ей сюрприз и привязал в ряд N шариков. Каждый шарик в ряду либо красный, либо зеленый, либо синий. Увидев шарики, Маша очень обрадовалась, но не самому подарку, а тому, что придумала для себя новую головоломку. Она пронумеровала все шарики натуральными числами от 1 до N слева направо. Ей стало интересно, сколько существует таких пар чисел (L, R), что 1 ≤ L < R ≤ N и на отрезке от L до R (включительно) красных, синих и зеленых шариков поровну. При достаточно больших значениях N Маше сложно справиться с такой задачей. Поэтому она обратилась за помощью к Вам. Ваша задача – написать программу, которая посчитает количество таких пар за нее.

Входные данные

В первой строке входных данных находятся целое число N (3 ≤ N ≤ 105). Во второй строке входных данных находится строка из N символов, i-ый символ равен «R», если i-ый шарик – красный, «G» – если зеленый, «B» – если синий.

Выходные данные

В единственной строке выходных данных выведите единственное целое неотрицательное число – ответ на поставленную задачу.


Понять и простить(Задача C)

Ограничение по времени 1 сек.

Ограничение по памяти 64 Мб.

Дима учится в школе, в которой сегодня произошло достаточно неприятное происшествие. В очередной раз кто-то разбил стекло в одном из учебных классов. Все учителя школы возмущены. На педсовете было принято решение найти и наказать виновного на этот раз. Диме, как одному из лучших учащихся старших классов, поручили важное задание – найти виновника. Задача не из простых, но Диме повезло найти свидетеля этого происшествия, который готов ответить на любые вопросы. За каждый ответ на вопрос свидетель потребовал платить ему по рублю. Дима не мог не оправдать доверия учителей, а потому согласился. Дима заранее определил N подозреваемых в совершении такого злодеяния. Он также подготовил M вопросов, которые он может задавать свидетелю. Свидетель может отвечать на каждый из них либо «Да», либо «Нет». Для каждого вопроса известно, кто из подозреваемых невиновен в случае ответа «Да», а кто не виновен в случае ответа «Нет». Чтобы заплатить как можно меньше денег, Дима хочет задать как можно меньше вопросов. Причем Дима заранее не знает, как ответит ему свидетель, а потому он хочет знать минимальное количество вопросов, которое ему придется задать в худшем случае, если он будет действовать оптимально. Напишите программу, которая определит это количество. Стоит отметить, что свидетель всегда говорит правду (ему не нужны лишние проблемы) и знает ответы на все M вопросов. Также среди N подозреваемых гарантированно есть виновник происшествия.

Входные данные

В первой строке входных данных находятся два целых числа N и M, разделенных одним пробелом (2 ≤ N ≤ 20, 1 ≤ M ≤ 50). Далее во входных данных заданы N строк, каждая из которых описывает очередного подозреваемого и состоит из M символов. На j-ой позиции i-ой строки стоит символ «Y», если из ответа «Да» на j-ый вопрос следует, что i-ый подозреваемый невиновен. Если из ответа «Нет» на j-ый вопрос следует, что i-ый подозреваемый невиновен, то на j-ой позиции i-ой строки находится символ «N». Гарантируется, что строки для всех подозреваемых различны.

Выходные данные

В единственной строке выходных данных выведите единственное целое положительное число – ответ на поставленную задачу.

Спасибо за внимание.

  • Vote: I like it
  • +4
  • Vote: I do not like it