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
  1. 2
  2. 5 2
  3. 192.168.1.0
  4. 192.168.1.101
  5. 192.168.2.5
  6. 192.168.2.7
  7. 202.14.27.235
  8. 255.255.255.0
  9. 255.255.0.0
  10. 4 2
  11. 127.127.0.1
  12. 10.134.52.0
  13. 127.0.10.1
  14. 10.134.0.2
  15. 235.235.0.0
  16. 1.57.16.0
Sample Output
  1. Case #1:
  2. 3
  3. 2
  4. Case #2:
  5. 3
  6. 4
  1. /**
  2. 题意:给n个ip地址,m个子网掩码,求在每一个子网掩码下的网络地址有多少个
  3. 做法:结构体
  4. **/
  5. #include <iostream>
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <algorithm>
  9. #include <cmath>
  10. #define maxn 1100
  11. using namespace std;
  12. struct Node
  13. {
  14. int a;
  15. int b;
  16. int c;
  17. int d;
  18. Node(){}
  19. } node[maxn],ip[maxn];
  20. Node mm[maxn];
  21. int cmp(Node A,Node B)
  22. {
  23. if(A.a != B.a) return A.a < B.a;
  24. else if(A.b != B.b) return A.b < B.b;
  25. else if(A.c != B.c) return A.c < B.c;
  26. else return A.d < B.d;
  27. }
  28. int check(Node A,Node B)
  29. {
  30. if(A.a == B.a && A.b == B.b && A.c == B.c && A.d == B.d) return ;
  31. return ;
  32. }
  33. int main()
  34. {
  35. //freopen("in.txt","r",stdin);
  36. int Case = ;
  37. int T;
  38. scanf("%d",&T);
  39. while(T--)
  40. {
  41. int n,m;
  42. memset(mm,,sizeof(mm));
  43. memset(node,,sizeof(node));
  44. memset(ip,,sizeof(ip));
  45. scanf("%d %d",&n,&m);
  46. for(int i=; i<n; i++)
  47. {
  48. scanf("%d.%d.%d.%d",&ip[i].a,&ip[i].b,&ip[i].c,&ip[i].d);
  49. }
  50. for(int i=; i<m; i++)
  51. {
  52. scanf("%d.%d.%d.%d",&node[i].a,&node[i].b,&node[i].c,&node[i].d);
  53. }
  54. printf("Case #%d:\n",Case++);
  55. for(int i=; i<m; i++)
  56. {
  57. string str[maxn];
  58. string ch;
  59. int cnt = ;
  60. for(int j=; j<n; j++)
  61. {
  62. mm[j].a = (node[i].a&ip[j].a);
  63. mm[j].b = (node[i].b&ip[j].b);
  64. mm[j].c = (node[i].c&ip[j].c);
  65. mm[j].d = (node[i].d&ip[j].d);
  66. }
  67. sort(mm,mm+n,cmp);
  68. Node tmp;
  69. tmp = mm[];
  70. //cout<<tmp.a <<" "<<tmp.b <<" "<<tmp.c <<" "<<tmp.d<<endl;
  71. int res = ;
  72. for(int j=;j<n;j++)
  73. {
  74. if(!check(tmp,mm[j]))
  75. {
  76. res ++;
  77. tmp = mm[j];
  78. }
  79. }
  80. printf("%d\n",res);
  81. }
  82. }
  83. return ;
  84. }

百度之星资格赛--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. BZOJ1591 & 洛谷2924:[USACO2008 DEC]Largest Fence 最大的围栏——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1591 https://www.luogu.org/problemnew/show/P2924#sub ...

  2. MySQL安装出现“不是内部或外部命令,也不是可执行程序”等一系列问题的解决方案

    MySQL安装出现“不是内部或外部命令,也不是可执行程序” 一.这是应该是环境变量处问题了,设置如下: 1)右击我的电脑选择“属性”,找到“高级系统设置” 2)在系统属性下,选择“高级”中的“环境变量 ...

  3. [Leetcode] search in rotated sorted array ii 搜索旋转有序数组

    Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this ...

  4. [PKUWC2018]随机算法

    题意:https://loj.ac/problem/2540 给定一个图(n<=20),定义一个求最大独立集的随机化算法 产生一个排列,依次加入,能加入就加入 求得到最大独立集的概率 loj25 ...

  5. python升级引发的问题总结

    http://www.cnblogs.com/ajianbeyourself/p/4214398.html http://www.cnblogs.com/hanggegege/p/6993003.ht ...

  6. bzoj 1098 [POI2007]办公楼biu bfs+补图+双向链表

    [POI2007]办公楼biu Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 1543  Solved: 743[Submit][Status][Di ...

  7. 003.关于数组的操作 [growing]

    1.获取数组的长度 #include<iostream> using namespace std; template<class T> int length(T& ar ...

  8. redis 查看所有键值

    zb@zb-computer:/home/wwwroot/default/lion/Admin$ /usr/local/redis/bin/redis-cli 127.0.0.1:6379> k ...

  9. JVM之字节码执行引擎

    方法调用: 方法调用不同于方法执行,方法调用阶段唯一任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不执行方法内部的具体过程.方法调用有,解析调用,分派调用(有静态分派,动态分派). 方法解析 ...

  10. hdu 3689 Infinite monkey theorem

    Infinite monkey theorem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...