康托展开
blue_sister
这个作者很懒,什么都没留下…
展开
-
HDU 3567 Eight II
//HDU 3567 Eight II //Eight的进阶版 //1.划归思想,将所有问题归为九种以X的位置进行讨论 //2.路径的记录与每个节点的特殊标记关联,该题便通过vis[][]起到记录路径的作用 //3.有顺序的广搜 //4.康托展开hash构造 #include<bits/stdc++.h> using namespace std; const int maxn = 4e5; //大于9! const int fac[10]={1,1,2,6,24,120,720,5040,原创 2021-02-03 14:52:58 · 99 阅读 · 0 评论 -
HDU 1043 Eight
原题~传送门 1.bfs+康托展开+打表+路径记录 2.反向思维 #include<bits/stdc++.h> using namespace std; const int maxs = 4e5; //const int AIM = 46234 ;//12456780对应的康托展开的hash值 bool vis[maxs]; int op1[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; char op2[5]="durl"; //因为bfs是从最终结果往回搜索,原创 2021-02-03 14:46:16 · 74 阅读 · 0 评论 -
康托展开
康托展开 1:全排列到一个自然数的双射 2:排列到自然数的双射中有顺序关系 3:用于构造hash表压缩空间 公式: 该公式实质定义了排列到自然数的映射的顺序关系 假如给一个排列编上号如:43215 则该排列的 X 表示编好号的五个物品排列中比43215编号值要小的个数是多少。 空间压缩: 假如有九个物品编号1~9,若直接用9位自然数映射那么花费的空间至少要到 a[987654321]. 而康拓排序仅需要9!= 362880 代价明显减少 代码实现 int fac[10]={1,1,2,6,24,120,7原创 2021-02-02 23:35:08 · 63 阅读 · 0 评论