D. унисон ≡
входной файл:
стандартный вход
ограничение времени:
1 сек
выходной файл:
стандартный выход
ограничение памяти:
512 мб
максимальный :
100
условие
два друга-ирландца фаолан и леон любят петь, особенно в праздники, когда они могут собраться и петь песни вместе. хоть они и друзья, у них не так много общих песен, но это не мешает им пытаться петь разные песни одновременно.
друзья обнаружили, что разные строки двух песен совместимы и могут быть спеты в унисон, если у строк одинаковая интонация, а количество слогов в этих строках совпадает. интонация строки считается восклицательной, если в строке есть восклицательный знак (ascii 33), и нейтральной во всех остальных случаях.
для слогораздела фаолан предлагает использовать общепринятую систему, в которой слогообразующим является гласный звук, и при этом два гласных звука не могут находиться в пределах одного слога. в случае, когда слово целиком состоит из согласных, оно за слог не считается, а производимый им согласный звук сливается со слогом в следующем или предыдущем слове.
когда фаолан и леон поют, они следуют по текстам своих песен слева направо, сверху вниз, с удовольствием распевая в унисон совместимые строки и пропуская все остальные.
сейчас друзья планируют заранее свое выступление, и им интересно, для данных двух песен, сколько суммарно децисекунд они могут пропеть в унисон при условии, что каждый слог пропевается в течение одной децисекунды. естественно, друзей интересует максимально возможная величина.
формат входных данных
в первой строке входных данных содержатся целые числа
n
m
nm
: количество строк в первой и второй песне соответственно. далее следуют
n
+
m
n+m
строк, содержащих текст первой и затем второй песни. каждая строка может состоять только из печатных ascii символов.
формат выходных данных
выходные данные должны содержать одно целое число: максимальное количество децисекунд, в течение которых друзья могут петь в унисон.
ограничения
1
≤
n
,
m
≤
10
6
1≤n,m≤106
n
∗
m
≤
10
7
n∗m≤107
длина каждой строки не превосходит
50
50
.
Рассмотрим решение
код:построчно пройдемся по коду, чтобы разобрать, как построить графики функций:
1. импортируем необходимые для построения графика библиотеки: numpy и matplot.pyplot
import matplotlib.pyplot as plt
import numpy as np
2. обработаем ось X
x = np.linspace(0, 10, 10)
numpi.linspace позволяет задать одномерный массив из указанного количества элементов внутри заданного интервала. Краткий общий синтаксис такой: (start, stop, num), аргументы start и stop соответственно служат для определения начала и конца, параметр num является необязательным (он определяет количество точек в последовательности, обычно ставят 50)
3. Поставим в соответствие нашим иксам заданные игреки:
y1 = [i**2 for i in x]
y2 = 2*x + 9
y1 задаем с list comprehension как квадратичную зависимость, y2 зададим просто как 2*x + 9
4. Наполним наш график информацией
plt.title("Функции: y1 = x ^ 2, y2 = 2*x + 9")
plt.xlabel("x")
plt.ylabel("y1, y2")
5. Включим сетку для удобства восприятия:
plt.grid()
6. Непосредственно построим графики:
plt.plot(x, y1, x, y2)
Результат на втором скриншотеВажно: для работы данной программы нужно через pip установить numpy и matplot, если вы работаете не в среде облачного интерпретатора.