#559. 相似度计算

    ID: 559 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 2 上传者: 标签>CCF CSP认证第 33 次CCF CSP软件能力认证字符串数学集合

相似度计算

问题描述

两个集合的 Jaccard 相似度定义为:

Sim(A,B)=ABAB\mathrm{Sim}(A,B)=\frac{|A\cap B|}{|A\cup B|}

即交集的大小除以并集的大小。当集合 AABB 完全相同时,Sim(A,B)=1\mathrm{Sim}(A,B)=1;当二者交集为空时,Sim(A,B)=0\mathrm{Sim}(A,B)=0

PP 希望使用 Jaccard 相似度来评估两篇文章的相似性。具体流程为:

  • 每篇文章由若干英文单词组成,单词仅包含英文字母(大小写字母)。
  • 对每篇文章先提取单词集合(即去掉重复单词),在集合构造与比较过程中忽略字母大小写(例如 theTheTHE 视为同一单词)。
  • AABB 分别为两篇文章的单词集合,计算并输出 AB|A\cap B|AB|A\cup B|。(相似度的除法由小 PP 自行完成)

请编写程序,读取两篇文章并输出 AB|A\cap B|AB|A\cup B|

输入格式

共三行:

  • 第一行包含两个正整数 nnmm,分别表示两篇文章的单词个数(即原始序列长度)。
  • 第二行包含 nn 个以空格分隔的单词,表示第一篇文章的词序列。
  • 第三行包含 mm 个以空格分隔的单词,表示第二篇文章的词序列。

在构造集合时需忽略英文字母的大小写差异(均转为小写或大写处理)。

所有测试数据满足:

1n,m104, 1 \le n,m \le 10^4,

且每个单词至多包含 1010 个字母;单词仅由英文字母组成。

输出格式

输出两行:

  • 第一行输出整数 AB|A\cap B|,表示两篇文章不同单词的交集大小;
  • 第二行输出整数 AB|A\cup B|,表示两篇文章不同单词的并集大小。

输入样例 1

3 2
The tHe thE
the THE

输出样例 1

1
1

输入样例 2

9 7
Par les soirs bleus dete jirai dans les sentiers
PICOTE PAR LES BLES FOULER LHERBE MENUE

输出样例 2

2
13

输入样例 3

15 15
Thou that art now the worlds fresh ornament And only herald to the gaudy spring
Shall I compare thee to a summers day Thou art more lovely and more temperate

输出样例 3

4
24

说明

样例解释

样例1

将字母忽略大小写后,两个集合均为 {the}\{\text{the}\},故交并集大小均为 1。

样例2

$A=\{\text{par},\text{les},\text{soirs},\text{bleus},\text{dete},\text{jirai},\text{dans},\text{sentiers}\}$(共 88

$B=\{\text{picote},\text{par},\text{les},\text{bles},\text{fouler},\text{lherbe},\text{menue}\}$(共 77

交集 {par,les}\{\text{par},\text{les}\} 大小为 22;并集大小为 8+72=138+7-2=13