题目大意:

  给你一些子网,求它们在整个网段的补集。

思路:

  将子网转换成二进制建一棵Trie,直接DFS搜到没有了就记下来输出。注意:所给的子网会有交集,若搜到结尾就不向下搜了。

代码:

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define M 40000
using namespace std;
int cnt,num,a[],flag[M<<],trie[M<<][];
struct node { int len; int d[]; }ans[M<<]; int read()
{
int x=;
char ch=getchar();
while (ch<'' || ch>'') ch=getchar();
while (ch>='' && ch<='') x=(x<<)+(x<<)+ch-,ch=getchar();
return x;
} void wk(int x,int y)
{
for (int l=;l;l--,x/=) a[l+(y<<)]=x%;
} void ins(int l)
{
int now=,i,j;
for (i=;i<=l;now=trie[now][a[i]],i++)
if (!trie[now][a[i]]) trie[now][a[i]]=++cnt;
flag[now]=;
} void sa(long long x,int l)
{
ans[++num].len=l; int i,k=;
for (i=l;i;i--,x>>=) a[i]=x%;
ans[num].d[]=ans[num].d[]=ans[num].d[]=ans[num].d[]=;
for (i=;i<=l;i++)
{
ans[num].d[k]=(ans[num].d[k]<<)+a[i];
if (i%==) k++;
}
if (l%) ans[num].d[k]<<=(-l%);
} void dfs(int k,long long x,int l)
{
if (flag[k]) return;
if (trie[k][])
if (trie[k][]) dfs(trie[k][],x<<,l+),dfs(trie[k][],x<<|,l+);
else sa(x<<|,l+),dfs(trie[k][],x<<,l+);
else if (trie[k][]) sa(x<<,l+),dfs(trie[k][],x<<|,l+);
} int main()
{
int t=read(),ii;
for (ii=;ii<=t;ii++)
{
int n=read(),i,j;
memset(trie,,sizeof(trie));
memset(flag,,sizeof(flag));
for (i=;i<=n;i++)
{
int u=read(),v=read(),w=read(),x=read();
wk(u,),wk(v,),wk(w,),wk(x,),ins(read());
}
num=,dfs(,,);
printf("Case #%d:\n",ii);
if (!n) printf("1\n0.0.0.0/0\n");
else
{
printf("%d\n",num);
for (i=;i<=num;i++) printf("%d.%d.%d.%d/%d\n",ans[i].d[],ans[i].d[],ans[i].d[],ans[i].d[],ans[i].len);
}
}
return ;
}

BNUOJ48605International Collegiate Routing Contest 题解的更多相关文章

  1. 2015 Syrian Private Universities Collegiate Programming Contest 题解

    题目在这里>_< 发现这场比赛在网上没有完整的题解,甚至连题目代码都没人贴出来(大概是因为题目太水了吧...).所以宝宝就来写个题解,也就当作成长记录了233333 A. Window 题 ...

  2. 2015 ACM Amman Collegiate Programming Contest 题解

    [题目链接] A - Who Is The Winner 模拟. #include <bits/stdc++.h> using namespace std; int T; int n; s ...

  3. 2017 ACM Amman Collegiate Programming Contest 题解

    [题目链接] A - Watching TV 模拟.统计一下哪个数字最多即可. #include <bits/stdc++.h> using namespace std; const in ...

  4. LA 7043 International Collegiate Routing Contest 路由表 字典树离散化+bitset 银牌题

    题目链接:给你n(n<=3e4)个路由地址(注意有子网掩码现象), 路由地址:128.0.0.0/1的形式 要求你输出一个路由集合,其是给定的路由集合的补集,且个数越少越好 #include & ...

  5. The 2015 China Collegiate Programming Contest Game Rooms

    Game Rooms Time Limit: 4000/4000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  6. (寒假GYM开黑)2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018)

    layout: post title: 2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018) author: &qu ...

  7. (寒假GYM开黑)2018 German Collegiate Programming Contest (GCPC 18)

    layout: post title: 2018 German Collegiate Programming Contest (GCPC 18) author: "luowentaoaa&q ...

  8. Codeforces Gym101572 B.Best Relay Team (2017-2018 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2017))

    2017-2018 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2017) 今日份的训练,题目难度4颗星,心态被打崩了,会的算法太少了,知 ...

  9. The 2015 China Collegiate Programming Contest A. Secrete Master Plan hdu5540

    Secrete Master Plan Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Othe ...

随机推荐

  1. 全局压缩http响应头

    见代码: public class CompressAttribute : ActionFilterAttribute { public override void OnActionExecuting ...

  2. ArchLinux 安装笔记:续 --zz

    续前话 在虚拟机里调试了几天,终于鼓起勇气往实体机安装了,到桌面环境为止的安装过程可以看我的前一篇文章<ArchLinux 安装笔记>.桌面环境我使用的是 GNOME,虽然用了很长一段时间 ...

  3. Android N 新特性 + APP开发注意事项

    1. 多窗口MultiWindow 多窗口MultiWindow,这是Android N里对开发者影响比较大的特性,也是大家疑问比较多的地方.站在开发者的角度其实不必太担心这个特性会导致我们需要修改很 ...

  4. C#在后台运行操作:BackgroundWorker的用法

    在我们的程序中,经常会有一些耗时较长的运算,为了保证用户体验,不引起界面不响应,我们一般会采用多线程操作,让耗时操作在后台完成,完成后再进行处理或给出提示,在运行中,也会时时去刷新界面上的进度条等显示 ...

  5. CentOS下用yum配置php+mysql+apache(LAMP)

    #安装需要的包,有依赖关系,自动帮你解决 yum install httpd mysql mysql-server php php-gd php-mbstring php-mysql #启动httpd ...

  6. codeforce好地方啊 Bear and Elections *

    Codeforces Round #318 居然可以看测试数据,哪里没过一目了然,哈哈哈 #include<cstdio> #include<iostream> #includ ...

  7. ASP.NET 5探险(4):如何把ASP.NET 5从beta4升级到beta5

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:上一篇文章讲述了ASP.NET 5 Beta带来的一些变化,虽然原文最后给出了从bet ...

  8. codeforces Round#380 div2

    1.字符串替换ogo+go…换成*** 思路:找ogo记录g位置,做初步替换和标记,非目标字母直接输出, 间隔为2的判断是否一个为标记g,一个为非标记做***替换 #include<iostre ...

  9. 注解:【有连接表的】Hibernate单向1->N关联

    Person与Address关联:单向1->N,[有连接表的] Person.java package org.crazyit.app.domain; import java.util.Hash ...

  10. 通信原理实践(二)——幅度调制

    一.幅度调制,并画出时域和频域波形 1.代码如下: function [ p_n ] = AM_func( N,fs,fm,Am,fc,Ac,Ma ) %UNTITLED 此处显示有关此函数的摘要 % ...