链接:
来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld
题目描述
子弹上膛的声音,是我唱歌的先兆。
——百里守约-朱雀志
小T有一张一共有n个字符串的字符串表,因为小T是神所以他可以任意修改这张表,
因为小T是个强迫症,所以他想方设法的使这些字符不同,
所以现在他进行以下操作Q次:
(1):给字符串表中加入一个字符串s。
(2):给字符串表去重,输出去掉字符串的数量。
由于出题人用win10配的数据,所以读入中会有空行出现,请忽略他们,避免应为这个而WA
注:本系列题不按难度排序哦
输入描述:
第一行两个整数n,Q 后n行每行一个字符串 后Q行每行代表一个操作: 一操作:1 s 二操作:2
输出描述: 对于每个二操作,进行回答。
输入
4 4playthepubggame1 game1 pubg22
输出
20
说明:1≤n,Q≤5×105 对于所有输入的字符串长度<=40
思路 :就是一个裸的 C++ map 用法,每次判断新加入的字符串有没有出现过,对于当时不知道map的我手动模拟字符串匹配写了几十行(个人感觉手动模拟能过,但是超时了,自己菜了),map类似于python里面的字典,键值对是成对出现的,对于每一个键(key)都有一个值(value)与其对应,且键的值是唯一的,不可重复,引用头文件 #include <map> 定义一个map类 map<string,bool>name
C++ 中 map 提供的是一种键值对容器,里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值。
代码:
1 #include2 #include 3 #include