BNUOJ48605International Collegiate Routing Contest 题解
题目大意:
给你一些子网,求它们在整个网段的补集。
思路:
将子网转换成二进制建一棵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 题解的更多相关文章
- 2015 Syrian Private Universities Collegiate Programming Contest 题解
题目在这里>_< 发现这场比赛在网上没有完整的题解,甚至连题目代码都没人贴出来(大概是因为题目太水了吧...).所以宝宝就来写个题解,也就当作成长记录了233333 A. Window 题 ...
- 2015 ACM Amman Collegiate Programming Contest 题解
[题目链接] A - Who Is The Winner 模拟. #include <bits/stdc++.h> using namespace std; int T; int n; s ...
- 2017 ACM Amman Collegiate Programming Contest 题解
[题目链接] A - Watching TV 模拟.统计一下哪个数字最多即可. #include <bits/stdc++.h> using namespace std; const in ...
- LA 7043 International Collegiate Routing Contest 路由表 字典树离散化+bitset 银牌题
题目链接:给你n(n<=3e4)个路由地址(注意有子网掩码现象), 路由地址:128.0.0.0/1的形式 要求你输出一个路由集合,其是给定的路由集合的补集,且个数越少越好 #include & ...
- The 2015 China Collegiate Programming Contest Game Rooms
Game Rooms Time Limit: 4000/4000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submi ...
- (寒假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 ...
- (寒假GYM开黑)2018 German Collegiate Programming Contest (GCPC 18)
layout: post title: 2018 German Collegiate Programming Contest (GCPC 18) author: "luowentaoaa&q ...
- 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颗星,心态被打崩了,会的算法太少了,知 ...
- 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 ...
随机推荐
- html 中几次方,平方米,立方米,下标,上标,删除线等的表示方法
html 中几次方,平方米,立方米,上标,下标,删除线等的表示方法 上标下标删除线 小号字 M2 54 X24+Y1<3=100 NN <sup>上标</sup> &l ...
- hdu 1754:I Hate It(线段树,入门题,RMQ问题)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 自制工具:迅速打开一个Node 环境的Playground
需求 经常有这种情况,写代码的时候需要实验种想法,亟需一种playground 环境来玩耍.如果是前端的话可以打开chrome 的控制台,但是如果是Node 的话就比较麻烦了.我要打开我的存放试验代码 ...
- c++ 的 坑真多之头文件
我发现类在做参数时,是可以不引用头文件,即不用#include"xxx.h"的,比如下面这样是没有问题的 #pragma once #include <string> ...
- 对服务器的ftp端口进行修改
对服务器的ftp端口进行了修改,把21端口改了,比如221端口,就这样用221连接的时候,连接登录成功,但打不开目录,为何,总结如下: 1.完成一个FTP的传输过程不仅仅只需要21一个端口,而是2个端 ...
- Oracle RMAN备份策略
建立增量备份:如果数据库运行于不归档模式下,只能在数据库干净关闭的情况下 ( 以 normal .immediate . transactional 方式关闭 ) 才能进行一致性的增量备份,如果数据库 ...
- Matlab tips and tricks
matlab tips and tricks and ... page overview: I created this page as a vectorization helper but it g ...
- 湖南省第十二届大学生计算机程序设计竞赛 A 2016
1803: 2016 Description 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤m; 2. a×b 是 2016 的倍数. In ...
- apache服务器安装
下载地址:http://www.apachehaus.com/cgi-bin/download.plx 全程按这篇来的,很顺利 http://www.cnblogs.com/yerenyuan/p/5 ...
- WEB前端知识体系脑图
说在开始的话: 我上大学那会,虽说主要是学Java语言,但是web前端也稍微学了一些,那时候对前端也没多在意,因为涉入的不深,可以搞一个差不多可以看的界面就可以了,其他也没过多在意. 因为稍微了解一点 ...