#CF710F. String Set Queries
String Set Queries
String Set Queries
- 时间限制:3 秒
- 内存限制:512 MiB
题目描述
你需要对一个字符串集合 处理 个查询。每个查询有三种类型之一:
- 向集合 中添加一个字符串 。保证字符串 之前没有被添加过。
- 从集合 中删除一个字符串 。保证字符串 当前在集合 中。
- 给定字符串 ,求集合 中所有字符串在 中出现的次数总和。如果集合 中的某个字符串 在 中出现了多次,则应计入所有出现次数。
请注意,你需要以在线模式(online)解决此问题。这意味着你不能一次读取所有输入。你只能在输出上一个三类查询的答案后读取下一个查询。在你的程序中,你需要在每次输出后调用 C++ 的 fflush 或 Java 的 BufferedWriter.flush 函数。
输入格式
第一行包含一个整数 (),表示查询的数量。
接下来的 行,每行包含一个整数 ()和一个非空字符串 ,表示查询的类型以及需要处理的字符串。所有字符串仅包含小写英文字母。
输入中所有字符串总长度不超过 。
输出格式
对于每个三类查询,输出一个整数 ,表示集合 中所有字符串在 中出现的次数之和。
样例输入 1
5
1 abc
3 abcabc
2 abc
1 aba
3 abababc
样例输出 1
2
2
样例输入 2
10
1 abc
1 bcd
1 abcd
3 abcd
2 abcd
3 abcd
2 bcd
3 abcd
2 abc
3 abcd
样例输出 2
3
2
1
0
数据范围
- 。
- 所有操作中的字符串均非空且只含小写英文字母。
- 所有操作字符串的总长度不超过 。
- 第一类操作保证字符串当前不在集合中;第二类操作保证字符串当前在集合中。