首页 > 试题广场 >

小红书推荐算法

[编程题]小红书推荐算法
  • 热度指数:1018 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
我们假定一个用户搜索的关键词是他感兴趣的,现在请你基于这个前提设计一个小红书购物的推荐算法。
该算法的核心思想如下:首先给定一个商品清单,其中有每个商品所包含的关键词属性,然后给出用户最近搜索过的一些关键词,请你将包含用户搜索过的更多关键词的商品排在用户目录的前面。
对于包含关键词数量相同的商品,我们按默认顺序排序,也就是说按输入给定的顺序优先级。

输入描述:
第一行输入一个正整数n,q,代表商品数量、用户搜索的关键词数量。
第二行输入q个互不相同的、仅由小写字母组成的字符串,代表用户搜索过的关键词。
接下来的2*n行,每两行描述一个商品。
第一行输入一个仅由小写字母组成的字符串name和一个正整数m_i,代表商品的名称和商品包含的关键词属性数量。
第二行输入m_i个互不相同的、仅由小写字母组成的字符串,代表每个商品的属性。
1\leq n,q \leq 30000
所有的m_i之和不超过30000
保证所有字符串长度不超过 20。所有商品的名称互不相同。


输出描述:
输出n行,每行一个字符串,代表用户主页中显示的商品名称。
示例1

输入

2 5
red book game music sigma
mozart 3
book classic music
arcaea 4
red music game hard

输出

arcaea
mozart

说明

arcaea 这个商品包含了用户搜索的 3 个关键词,而 mozart 只包含了 2 个。

这道题你会答吗?花几分钟告诉大家答案吧!