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 ...
随机推荐
- linux中解决SSH连接慢问题 关键点GSSAPIAuthentication
[root@ok 6FE5-D831]# ssh -v xxx.xxx.xxx.64 OpenSSH_5.3p1, OpenSSL Feb debug1: Reading configuration ...
- Clr Via C#读书笔记----基元线程同步构造
线程文章:http://www.cnblogs.com/edisonchou/p/4848131.html 重点在于多个线程同时访问,保持线程的同步. 线程同步的问题: 1,线程同步比较繁琐,而且容易 ...
- 在ubuntu上搭建开发环境7---ubuntu安装JDK
首先,当然是要下载了. 地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 按 ...
- wp8 入门到精通 Gallery
<Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.Resources> ...
- hdu 4023 2011上海赛区网络赛C 贪心+模拟
以为是贪心,结果不是,2333 贪心最后对自己绝对有利的情况 点我 #include<cstdio> #include<iostream> #include<algori ...
- 免费电子书:C#代码整洁之道
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:<Clean Code(代码整洁之道)>是一本经典的著作,那么对于编写整洁 ...
- HR外包系统 - 工资计算-几种常见账单计算规则
01-正常工资计税 (包括同一月多地计税方式) 02-年终奖计税 (包括可分批发放,但计税总额不变) 按工资 除以月份,看落在那个计税区间,获取税率和扣除数,再用总额*税率-扣除数,要考虑当月工资如 ...
- Effective C++ 之 Item 2:尽量以 const, enum, inline 替换 #define
Effective C++ Chapter 1. 让自己习惯C++(Accustoming Yourself to C++) Item 2. 尽量以 const, enum, inline 替换 #d ...
- set[c++]
#include <iostream> using namespace std; #include <set> int main(int argc, const char * ...
- Educational Codeforces Round 3 E. Minimum spanning tree for each edge LCA/(树链剖分+数据结构) + MST
E. Minimum spanning tree for each edge Connected undirected weighted graph without self-loops and ...