ГлавнаяСборникиТурнирыРазделыФорумыУчастникиПечатьПомощьО системе

Турниры > Отборочный турнир сезона «Осень — 2024» > задача:


G. Макс и фильтрация спама

Отборочный турнир сезона «Осень — 2024»

Старт: 21.сен.2024 в 10:00:00
Финиш: 29.сен.2024 в 23:00:00
Турнир завершён!
• Турнирная таблица

Задачи турнира

• A. Макс и техническая литература
• B. Макс и воздушные шары
• C. Макс и новые папки
• D. Макс и Сет
• E. Макс и формирование команд
• F. Макс и подтягивания
• G. Макс и фильтрация спама
• H. Макс и словарь синонимов
• I. Макс и помощь Деду Морозу
• J. Макс и фуршет

Обратная связь

Если у вас есть предложения или пожелания по работе Contester, посетите форум сайта www.contester.ru.

Лимит времени 2000/2000/2000/2000 мс. Лимит памяти 65536/65536/65536/65536 Кб.

Макс и фильтрация спама
Макс и фильтрация спама
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Максу слишком часто стали приходить электронные письма с предложениями купить чудодейственные лекарства или новые пылесосы. Так как Макс — программист, он решил самостоятельно написать систему для фильтрации спама.

Вероятность того, что сообщение, содержащее слово $$$W$$$, — спам, определяется по формуле

$$$$$$P(W) = \frac{\frac{(N_{bad} + 1)}{(M_{bad} + M)}}{\frac{(N_{good} + 1)}{(M_{good} + M)} + \frac{(N_{bad} + 1)}{(M_{bad} + M)}}$$$$$$

В этой формуле:

  • $$$N_{good}$$$, $$$N_{bad}$$$ — количество раз, когда слово $$$W$$$ встречалось в нормальных сообщениях и в спам-сообщениях соответственно;
  • $$$M_{good}$$$, $$$M_{bad}$$$ — общее количество слов в нормальных сообщениях и спам-сообщениях соответственно;
  • $$$M$$$ — общее количество различных слов во всех видах сообщений.

Вероятность того, что сообщение из слов $$$W_1$$$, $$$W_2$$$, ..., $$$W_K$$$ — спам, определяется по формуле

$$$$$$P(W_1, W_2, \ldots, W_K) = \frac{P(W_1) \cdot P(W_2) \cdot \ldots \cdot P(W_K)}{P(W_1) \cdot P(W_2) \cdot \ldots \cdot P(W_K) + (1 - P(W_1)) \cdot (1 - P(W_2)) \cdot \ldots \cdot (1 - P(W_K))}$$$$$$

Макс уже классифицировал все письма, которые приходили к нему раньше, как спам или не спам. Помогите Максу определить, является ли спамом очередное сообщение.

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

Первая строка содержит целое число $$$N$$$ ($$$1 \le N \le 1000$$$) — количество классифицированных сообщений.

Следующие $$$N$$$ строк описывают классифицированные сообщения. Каждая из них содержит последовательность $$$S_i$$$ ($$$1 \le |S_i| \le 100$$$), состоящую из строчных латинских букв и пробелов, а также целое число $$$C_i$$$ ($$$0 \le C_i \le 1$$$) — соответственно текст сообщения и его класс: 0 — спам, 1 — не спам.

Следующая строка содержит последовательность $$$T$$$ ($$$1 \le T \le 100$$$), состоящую из строчных латинских букв и пробелов, — текст сообщения, которое нужно классифицировать.

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

Выведите одно вещественное число — вероятность того, что сообщение $$$T$$$ является спамом. Точность ответа должна составлять не менее 4 знаков после десятичной точки.

Примеры

Входные данные
6
send us your password 0
send us your review 1
password review 1
review us 0
send your password 0
send us your account 0
review us now
Выходные данные
0.251446
Входные данные
4
sale iphone sale 0
sale sale bluetooth 0
sale macbook 0
new xiaomi sale 1
sale sale sale macbook xiaomi
Выходные данные
0.747755

Для отправки решений необходимо выполнить вход.

www.contester.ru