博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客小白月赛15 C 表单 ( map 使用)
阅读量:4594 次
发布时间:2019-06-09

本文共 1439 字,大约阅读时间需要 4 分钟。

链接:

来源:牛客网

时间限制: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

说明:1n,Q5×105  对于所有输入的字符串长度<=40

思路 :就是一个裸的 C++ map 用法,每次判断新加入的字符串有没有出现过,对于当时不知道map的我手动模拟字符串匹配写了几十行(个人感觉手动模拟能过,但是超时了,自己菜了),map类似于python里面的字典,键值对是成对出现的,对于每一个键(key)都有一个值(value)与其对应,且键的值是唯一的,不可重复,引用头文件 #include <map> 定义一个map类 map<string,bool>name

C++ 中 map 提供的是一种键值对容器,里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值。

 

代码:

1 #include 
2 #include
3 #include
4 5 using namespace std; 6 int n, q, num, ans; 7 string s; 8 9 int main()10 {11 map
a;12 cin >> n >> q;13 for(int i = 0; i < n; i ++ )14 {15 cin >> s;16 if(a[s]) ans ++ ;17 a[s] = 1;18 }19 for(int i = 0; i < q; i ++ )20 {21 scanf("%d",&num);22 if(num == 1)23 {24 cin >> s;25 if(a[s]) ans ++ ;26 a[s] = 1;27 }28 else29 {30 cout << ans <

 

 

转载于:https://www.cnblogs.com/chuyds/p/11031005.html

你可能感兴趣的文章
poj3667(线段树区间合并&区间查询)
查看>>
51nod1241(连续上升子序列)
查看>>
SqlSerch 查找不到数据
查看>>
集合相关概念
查看>>
Memcache 统计分析!
查看>>
(Python第四天)字符串
查看>>
个人介绍
查看>>
使用python动态特性时,让pycharm自动补全
查看>>
关于R软件的安装
查看>>
MySQL数据库免安装版配置
查看>>
你必知必会的SQL面试题
查看>>
html5 Canvas绘制时钟以及绘制运动的圆
查看>>
Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween
查看>>
JavaScript空判断
查看>>
洛谷 P1439 【模板】最长公共子序列(DP,LIS?)
查看>>
python timeit
查看>>
Wireless Network 并查集
查看>>
51nod 1019 逆序数
查看>>
原生的AJAX
查看>>
位运算
查看>>