CCF-CSP题解 201812-3 CIDR合并 题目想求与给定前缀列表等价的包含IP前缀数目最少的前缀列表。 首先是怎么存储前缀列表。用一个long long存储IP地址,再存一个前缀长度,封装在一个结构体里<ipNum,len><ipNum,len>,方便后面排序等操作。IP前缀有三种输入格式,稍微分情况讨论一下。 接着以ipNumipNum为第一关键...
CCF/CSP-201812-3-CIDR合并 按照题意模拟,但是只有90,不想找bug了,毕竟算法不是自己想的,找起来也麻烦。 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define inf 0x3f3f3f3f 4 #define LL long long 5 #define pui pair<unsigned int,int> 6 #define mp make_pair 7 #define x first...
1#include<bits/stdc++.h>2usingnamespacestd;3#defineinf 0x3f3f3f3f4#defineLL long long5#definepui pair<unsigned int,int>6#definemp make_pair7#definex first8#definey second910constintmaxn=1000005;11pui a[maxn];12vector<pui>ans;13intn,q[4]={24,16,8,0},l[]={0,8,16,24,32};...
途中进行路径压缩unsignedintfind(unsignedinti){unsignedinttmp=i;while(f[tmp]!=tmp)//找到根节点为tmp{tmp=f[tmp];}while(i!=tmp)//从i到根节点的路上,每个结点都让其指向根节点{unsignedintk=i;i=f[i];f[k]=tmp;}returntmp;}//合并两个集合,并且...
CCF CSP认证 201812-3 CIDR合并 (01Trie) (100分) 所有的ip前缀可以构成一棵01Trie,每个ip地址对应Trie上的一棵叶子结点,那么题意就是选出尽可能少的结点,使其子树中包含所有给出前缀的叶子结点,dp即可 非标准解法,没看提示,被卡内存了很难受~~