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。