U538295 abandon的英语学习

题目背景

在大学中,英语也是非常重要的,有一个叫"abandon"的同学现在想要不在大学英语中挂科和顺利通过英语四六级,现在他决定开始背单词了。已知它初始已掌握n个单词,现在将进行q次记忆操作,请帮助它完成这场学习英语的挑战。

题目描述

abandon因为有一定的英语基础,因此原来背过n个单词(这n个单词的历史背诵次数默认1次,因为abandon的记性较差所以这n个单词中可能也有重复的,那么我们默认abandon是再背了这个单词1次)。 现在小明有q次选择,每次选择可以选择一种操作模式 现有三种操作模式: 记忆模式:选择1后,"abandon"会随机背诵m个单词(可能重复背诵已掌握的单词,重复背诵会加深记忆次数)。 查询模式:选择2时,系统将询问m个单词,你需要判断abandon是否背过该单词: 若已背过,输出YES并换行显示该单词的历史背诵次数; 若未背过,输出NO并换行显示当前已背诵的不重复单词总数。 展示模式:选择3时,按字典序输出所有已背单词及其历史背诵次数 注意:如果你运行超时了,请仔细阅读提示。

输入格式

第一行两个整数n和q 接下来n行每行1个字符串,表示初始掌握的单词 接下来q行每行表示操作: 输入1后再输入m→ 选择记忆模式,背诵m个单词 输入2后再输入m后跟m行每行1个字符串 → 选择查询模式 输入3 → 选择展示模式

输出格式

根据操作类型输出: 选择2时,对每个查询单词输出两行: 判断结果+次数/总数,输出判断结果之后另起一行输出次数/总数之间 选择3时,每行按单词+次数格式输出,单词和次数之间用空格隔开 其他操作无需输出

说明/提示

保证每个字符串的长度不超过10000 0≤n≤100 1≤q≤5e6 1≤m≤500 保证q*m≤5e6 由于数据规模较大,请使用快速的输入输出方法。 对于Python语言,推荐使用sys.stdin.readline; C++语言建议关闭流同步(不会关同步流的用另一个方法)或用scanf,还有不建议使用endl; Java语言建议使用BufferedReader。