康托展开
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 · 103 阅读 · 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 · 78 阅读 · 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 · 64 阅读 · 0 评论