C++TSL之map容器(悲伤的故事)
说一个悲伤地故事!
这几天正在加紧时间学STL!昨天刚刚勉强把map弄懂一点点。(故事的前提)
今天,来到平台准备刷有关map的题,老师推荐了一道题目。说是有关map。然后。。不会!!
后来,百度。。瞬间蒙逼!什么鬼!
特此求教!
IP聚合
当今世界,网络已经无处不在了,小度熊由于犯了错误,当上了度度公司的网络管理员,他手上有大量的 IP列表,小度熊想知道在某个固定的子网掩码下,有多少个网络地址。网络地址等于子网掩码与 IP 地址按位进行与运算后的结果,例如:
子网掩码:A.B.C.D
IP 地址:a.b.c.d
网络地址:(A&a).(B&b).(C&c).(D&d)
第一行包含一个整数TTT,(1≤T≤50)(1 \leq T \leq 50)(1≤T≤50)代表测试数据的组数,
接下来TTT组测试数据。每组测试数据包含若干行,
第一行两个正整数N(1≤N≤1000,1≤M≤50),MN(1 \leq N \leq 1000, 1 \leq M \leq 50),MN(1≤N≤1000,1≤M≤50),M。接下来NNN行,每行一个字符串,代表一个 IP 地址,
再接下来MMM行,每行一个字符串代表子网掩码。IP 地址和子网掩码均采用 A.B.C.DA.B.C.DA.B.C.D的形式,其中A,B,C,DA,B,C,DA,B,C,D均为非负整数,且小于等于255。
对于每组测试数据,输出两行:
第一行输出: "Case #i:" 。iii代表第iii组测试数据。
第二行输出测试数据的结果,对于每组数据中的每一个子网掩码,输出在此子网掩码下的网络地址的数量。
2
5 2
192.168.1.0
192.168.1.101
192.168.2.5
192.168.2.7
202.14.27.235
255.255.255.0
255.255.0.0
4 2
127.127.0.1
10.134.52.0
127.0.10.1
10.134.0.2
235.235.0.0
1.57.16.0
Case #1:
3
2
Case #2:
3
4 代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <set>
#include <vector>
#include <map>
using namespace std;
const int maxn=1100;
int a[maxn];
int b[maxn];
int c[maxn];
int d[maxn];
map<long long,int> m;
int main()
{
int t;
scanf("%d",&t);
for(int te=1;te<=t;te++)
{
int N,M;
scanf("%d%d",&N,&M);
for(int i=0;i<N;i++) scanf("%d.%d.%d.%d",&a[i],&b[i],&c[i],&d[i]);
printf("Case #%d:\n",te);
int A,B,C,D;
int ans;
long long temp;
for(int i=1;i<=M;i++)
{
m.clear();
ans=0;
scanf("%d.%d.%d.%d",&A,&B,&C,&D);
for(int j=0;j<N;j++)
{
temp=0;
temp=temp*1000+(a[j]&A);
temp=temp*1000+(b[j]&B);
temp=temp*1000+(c[j]&C);
temp=temp*1000+(d[j]&D);
if(!m[temp])
{
ans++;
m[temp]=1;
}
}
printf("%d\n",ans);
}
}
return 0;
}
求大神评论赐教!!
C++TSL之map容器(悲伤的故事)的更多相关文章
- map 容器的使用
C++中map容器提供一个键值对容器,map与multimap差别仅仅在于multiple允许一个键对应多个值. 一.map的说明 1 头文件 #include <map> ...
- 一种map容器遍历的方法
遍历算法是一种很常见而且非常重要的算法,我们用map容器的时候可能用的比较多的是查找,我今天才第一次要用到遍历.下面举个例子就知道了. map<string,string> mp; str ...
- CSU 1113 Updating a Dictionary(map容器应用)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1113 解题报告:输入两个字符串,第一个是原来的字典,第二个是新字典,字典中的元素的格式为 ...
- map容器
map容器一般用于对字符串进行编号,主要用于建图方面,例如把城市名按数字进行编号 #include"stdio.h" #include"string.h" #i ...
- Tangled in Cables(Kruskal+map容器处理字符串)
/** 题意: 给你两个城市之间的道路(无向图),求出需要的 电缆.如果大于所提供的,就输出Not enough ... 否则输出所需要的电缆长度. 输入:N (给 ...
- stl之map容器的原理及应用
容器的数据结构同样是采用红黑树进行管理,插入的元素健位不允许重复,所使用的节点元素的比较函数,只对元素的健值进行比较,元素的各项数据可通过健值检索出来.map容器是一种关联容器,实现了SortedAs ...
- STL --> map容器
map容器 一.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响.对于迭代器来说,可以修改实值,而不能修改key. 二.ma ...
- 小白鼠排队(map容器插入数据的四种方法)
题目描述 N只小白鼠(1 <= N <= 100),每只鼠头上戴着一顶有颜色的帽子.现在称出每只白鼠的重量,要求按照白鼠重量从大到小的顺序输出它们头上帽子的颜色.帽子的颜色用“red”,“ ...
- 蓝桥杯 算法提高 9-3摩尔斯电码 _c++ Map容器用法
//****|*|*-**|*-**|--- #include <iostream> #include <map> #include <vector> #inclu ...
随机推荐
- cocos2dx 3.x(捕鱼达人炮台角度换算)
// // GameScence.hpp // NotesDamo // // Created by apple on 16/10/23. // // #ifndef GameScence_hpp # ...
- php 调用 java 接口
php 需要开启 curl模块 /** HTTP 请求函数封装*/function http_request_cloudzone($url, $data){ //var_dump($url." ...
- SQLserver查看数据库端口 脚本
exec sys.sp_readerrorlog 0, 1, 'listening'
- chat
启动服务器 连接数据库 导入数据库并显示 开启监听 与客户端建立连接 写入数据库并显示 创建线程用来接受客户端消息
- [分享]关于windows下的小技巧
----1.首先,决定您要增加到菜单中的文件类型,以及启动这类文件的应用程序.如果是某些在启动时会自动打开的新文件或让您可以立即使用的应用程序,如记事本.写字板或画图等,就不需要特别的准备工作.但如果 ...
- extjs 常见的小问题
今天,小白就来总结下extjs的使用的时候的各种小问题或者说是小技巧.希望能够给各位刚接触extjs的朋友一点帮助. 1.当存在store的各种组件的store的autoload属性为false的时候 ...
- linux第4天 shell socket
$[ ] 表示形式告诉shell对方括号中的表达式求值 echo $[3+9] 赋值运算符 =,+=,-=,*=,/=,%=,&=,^=.|=,<<=,>>= let ...
- linux tomcat 配置
http://www.cnblogs.com/xdp-gacl/p/4097608.html
- oracle 的索引
一.索引分类 按逻辑分: 单列索引(Single column): 单列索引是基于单列所创建的索引 复合(多列)索引(Concatenated ): 复合索引是基于两列或者多列所创建的索引 ...
- 夺命雷公狗jquery---2层级选择器
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...