UVALive 7043 International Collegiate Routing Contest(字典树)
来源:互联网 发布:新手怎么做淘宝客 编辑:程序博客网 时间:2024/05/17 04:57
思路:读懂题目....这很关键....
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;const int N=3*1e4+10;const int mask=(1<<8)-1;int T,cas=1;int n,ansn;unsigned int a[N],len[N],ans[N<<1],al[N<<1];const int maxc=2;int ch[N<<5][maxc],si[N<<5],size;void init(){memset(ch[1],0,sizeof(ch[1]));si[1]=0;size=2;ansn=0;}void insert(int s,int BIT){if(BIT==0){si[1]=1;return;}int u=1;for(int i=31;i>31-BIT;i--){int c=(s&(1<<i)?1:0);if(!ch[u][c]){memset(ch[size],0,sizeof(ch[0]));si[size]=0;ch[u][c]=size++;}u=ch[u][c];}si[u]=1;}void dfs(int u,unsigned int sum,int depth){if(si[u]) return;if(!ch[u][0]&&!ch[u][1]){ans[ansn]=sum;al[ansn++]=depth;return;}if(ch[u][0]) dfs(ch[u][0],sum,depth+1);else{ans[ansn]=sum;al[ansn++]=depth+1;}if(ch[u][1]) dfs(ch[u][1],sum|(1U<<(31-depth)),depth+1);else{ans[ansn]=sum|(1U<<(31-depth));al[ansn++]=depth+1;}}int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); scanf("%d",&T);while(T--){init();scanf("%d",&n);for(int i=1;i<=n;i++){a[i]=0;for(int j=0,x;j<4;j++){scanf("%d%*c",&x);//printf("%d ",x);a[i]=a[i]<<8|x;}scanf("%d",len+i);//printf("%d\n",len[i]);insert(a[i],len[i]);}dfs(1,0,0);printf("Case #%d:\n",cas++);printf("%d\n",ansn);for(int i=0;i<ansn;i++){int b[4];for(int j=3;j>=0;j--) {b[j]=ans[i]&mask;ans[i]>>=8;}printf("%d.%d.%d.%d/%d\n",b[0],b[1],b[2],b[3],al[i]);}} return 0;}
0 0
- UVALive 7043 International Collegiate Routing Contest(字典树)
- UVALive 7043 International Collegiate Routing Contest(字典树)
- UVALive 7043 International Collegiate Routing Contest 字典树
- UVALive 7043 International Collegiate Routing Contest 字典树,递归
- 2014西安现场赛I题 International Collegiate Routing Contest(字典树)
- CF GYM 100548 International Collegiate Routing Contest(2014ACM西安现场赛Problem I)
- 西安现场赛 Problem I. International Collegiate Routing Contest
- 2014 西安站 I International Collegiate Routing Contest(trie)
- CF GYM 100548 International Collegiate Routing Contest(2014ACM西安现场赛Problem I)不懂提
- Codeforces GYM 100548 I - International Collegiate Routing Contest 2014 ACM Xian Regional Contest
- 2014 ACM/ICPC Xi'an Regional I - International Collegiate Routing Contest
- Problem I. International Collegiate Routing ContestGym
- The 31st ACM International Collegiate Programming Contest World Finals
- 2009 ACM International Collegiate Programming Contest Winners Announced
- UVALive 7043 字典树+DFS
- UVALive 6133 Cellphone Typing(字典树)
- Galactic Collegiate Programming Contest
- ACM International Collegiate Programming H.动态规划
- ResponseStatusExceptionResolver和ResponseStatus注解的使用
- 堆和栈
- Android 动画系列之逐帧(Frame)动画详解
- 字符串(一)字符串逆序
- javascript基础。表单操作
- UVALive 7043 International Collegiate Routing Contest(字典树)
- CodeForces 362B Petya and Staircases
- Exam 1 Character Recognition - Works Application 16
- Android 垂直seekbar
- 用DateUtil.js将时间路转为正确的日期格式
- 实习入职第十二天:Android中Bitmap,byte[],Drawable,InputStream相互转化工具类
- UVALive 7045 Last Defence(找规律)
- sdut 3100
- Linux命令学习之ls命令