IP聚合

Accepts: 1901
Submissions: 4979
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
Problem Description

当今世界,网络已经无处不在了,小度熊由于犯了错误,当上了度度公司的网络管理员,他手上有大量的 IP列表,小度熊想知道在某个固定的子网掩码下,有多少个网络地址。网络地址等于子网掩码与 IP 地址按位进行与运算后的结果,例如:

子网掩码:A.B.C.D

IP 地址:a.b.c.d

网络地址:(A&a).(B&b).(C&c).(D&d)

Input

第一行包含一个整数T,(1≤T≤50)代表测试数据的组数,

接下来T组测试数据。每组测试数据包含若干行,

第一行两个正整数N(1≤N≤1000,1≤M≤50),M。接下来N行,每行一个字符串,代表一个 IP 地址,

再接下来M行,每行一个字符串代表子网掩码。IP 地址和子网掩码均采用 A.B.C.D的形式,其中A、B、C、D均为非负整数,且小于等于255。

Output

对于每组测试数据,输出两行:

第一行输出: "Case #i:" 。i代表第i组测试数据。

第二行输出测试数据的结果,对于每组数据中的每一个子网掩码,输出在此子网掩码下的网络地址的数量。

Sample Input
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
Sample Output
Case #1:
3
2
Case #2:
3
4
/**
题意:给n个ip地址,m个子网掩码,求在每一个子网掩码下的网络地址有多少个
做法:结构体
**/
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <cmath>
#define maxn 1100
using namespace std;
struct Node
{
int a;
int b;
int c;
int d;
Node(){}
} node[maxn],ip[maxn];
Node mm[maxn];
int cmp(Node A,Node B)
{
if(A.a != B.a) return A.a < B.a;
else if(A.b != B.b) return A.b < B.b;
else if(A.c != B.c) return A.c < B.c;
else return A.d < B.d;
}
int check(Node A,Node B)
{
if(A.a == B.a && A.b == B.b && A.c == B.c && A.d == B.d) return ;
return ;
}
int main()
{
//freopen("in.txt","r",stdin);
int Case = ;
int T;
scanf("%d",&T);
while(T--)
{
int n,m;
memset(mm,,sizeof(mm));
memset(node,,sizeof(node));
memset(ip,,sizeof(ip));
scanf("%d %d",&n,&m);
for(int i=; i<n; i++)
{
scanf("%d.%d.%d.%d",&ip[i].a,&ip[i].b,&ip[i].c,&ip[i].d);
}
for(int i=; i<m; i++)
{
scanf("%d.%d.%d.%d",&node[i].a,&node[i].b,&node[i].c,&node[i].d);
}
printf("Case #%d:\n",Case++);
for(int i=; i<m; i++)
{
string str[maxn];
string ch;
int cnt = ;
for(int j=; j<n; j++)
{
mm[j].a = (node[i].a&ip[j].a);
mm[j].b = (node[i].b&ip[j].b);
mm[j].c = (node[i].c&ip[j].c);
mm[j].d = (node[i].d&ip[j].d);
}
sort(mm,mm+n,cmp);
Node tmp;
tmp = mm[];
//cout<<tmp.a <<" "<<tmp.b <<" "<<tmp.c <<" "<<tmp.d<<endl;
int res = ;
for(int j=;j<n;j++)
{
if(!check(tmp,mm[j]))
{
res ++;
tmp = mm[j];
}
}
printf("%d\n",res);
}
}
return ;
}

百度之星资格赛--IP聚合的更多相关文章

  1. 2015百度之星之-IP聚合

    IP聚合  Accepts: 138  Submissions: 293  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 6553 ...

  2. 【百度之星】-IP聚合

    问题描述: Problem Description 当今世界,网络已经无处不在了,小度熊由于犯了错误,当上了度度公司的网络管理员,他手上有大量的 IP列表,小度熊想知道在某个固定的子网掩码下,有多少个 ...

  3. 模拟 2015百度之星资格赛 1003 IP聚合

    题目传送门 /* 模拟水题,排序后找出重复的ip就可以了 */ #include <cstdio> #include <iostream> #include <algor ...

  4. 模拟 百度之星资格赛 1003 IP聚合

    题目传送门 /* 模拟水题,排序后找出重复的ip就可以了 */ #include <cstdio> #include <iostream> #include <algor ...

  5. 2016百度之星 资格赛ABCDE

    看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=690 交题:http://acm.hdu.edu.cn/search.php ...

  6. HDU 5688:2016"百度之星" - 资格赛 Problem D

    原文链接:https://www.dreamwings.cn/hdu5688/2650.html Problem D Time Limit: 2000/1000 MS (Java/Others)    ...

  7. HDU 5686:2016"百度之星" - 资格赛 Problem B

    原文链接:https://www.dreamwings.cn/hdu5686/2645.html Problem B Time Limit: 2000/1000 MS (Java/Others)    ...

  8. HDU 5685:2016"百度之星" - 资格赛 Problem A

    原文链接:https://www.dreamwings.cn/hdu5685/2637.html Problem A Time Limit: 2000/1000 MS (Java/Others)    ...

  9. 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)

    .navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...

随机推荐

  1. BZOJ1861:[ZJOI2006]书架——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1861 (题面复制于洛谷) 题目描述 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上 ...

  2. kafka-zk-安装测试初体验

    第一步: 安装 安装工具brew install kafka 会自动安装依赖zookeeper 注:安装配置文件位置 /usr/local/etc/kafka|zookeeper 注: #tickTi ...

  3. simpleDateFormat的 学习

    http://blog.csdn.net/qq_27093465/article/details/53034427

  4. Android实现自动定位城市并获取天气信息

    定位实现代码: <span style="font-size:14px;">import java.io.IOException; import java.util.L ...

  5. Weblogic 9.2 启动时报错 javax.xml.namespace.QName

    启动Weblogic 时会报错.javax.xml.namespace.QName; local class incompatible: stream classdesc serialVersionU ...

  6. C11性能之道:标准库优化

    1.emplace_back减少内存拷贝和移动 emplace_back能通过参数构造对象,不需要拷贝或者移动内存,相比pusk_back能更好的避免内存的拷贝和移动,使容器插入元素性能得到进一步提升 ...

  7. linux 执行shell脚本的4种方法总结

    bash shell 脚本的方法有多种,假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在的目录(此时, ...

  8. hdu5909 Tree Cutting

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5909 [题解] 设$f_{x,i}$表示以$x$节点的子树中,权值为$i$的子树个数,其中$x$必选. ...

  9. 【BZOJ】4147: [AMPPZ2014]Euclidean Nim

    [算法]博弈论+数论 [题意]给定n个石子,两人轮流操作,规则如下: 轮到先手操作时:若石子数<p添加p个石子,否则拿走p的倍数个石子.记为属性p. 轮到后手操作时:若石子数<q添加q个石 ...

  10. c语言目录操作总结

    =================================================== char *getcwd( char *buffer, int maxlen ); (获取当前目 ...