1.康托展开的解释
康托展开就是一种特殊的哈希函数
把一个整数X展开成如下形式:
X=a[n]*n!+a[n-1]*(n-1)!+...+a[2]*2!+a[1]*1!
其中,a为整数,并且0
{1,2,3,4,...,n}表示1,2,3,...,n的排列如 {1,2,3} 按从小到大排列一共6个。123 132 213 231 312 321 。...
分类:
其他好文 时间:
2014-12-24 00:03:22
阅读次数:
189
魔板Time Limit: 10000/5000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1679Accepted Submission(s): 354Problem Descript...
分类:
其他好文 时间:
2014-12-19 20:29:45
阅读次数:
175
康托展开式去重来一发bfs
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int PermSize=9;
int factory[20]={0,1,2,6,24,120,720,5040,40320,3...
分类:
其他好文 时间:
2014-12-12 20:59:37
阅读次数:
152
商店买东西会有优惠政策,使用优惠政策使顾客花的钱尽可能的少。
这道题很有现实背景啊,起初看这道题想的是用规则去优化各种组合情况的物品,并没有想到用背包。因为没有做过“规则”这种物品
还有一点就是接收输入信息的时候若用高维数组很难控制,当时竟然写出了int (*it)[5][5][5][5] 这种东西。
这时,进制优化发挥作用了,其思想类似于康托展开,且因为这个问题并不是直接将位置映射到数集,...
分类:
其他好文 时间:
2014-11-12 17:58:21
阅读次数:
143
2333.。。
由于TC参赛数太少,加上不断的fst 我都降到div2了。
还好做完就回div1了。。
250
水题
500
水题。。
直接bfs扩展就行了
注意判重, 我还用康托展开了真是多此一举。。
1000
这题理解错题意了。。我说看别人代码怎么看着不对劲来着
不过还是非常容易的一道题
二进制枚举烧哪些叶子结点
然后对每种烧法
求最短路
求完最短路,枚举边...
分类:
其他好文 时间:
2014-11-03 14:41:39
阅读次数:
214
Ignatius and the Princess II
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4865 Accepted Submission(s): 2929
Problem Descriptio...
分类:
其他好文 时间:
2014-10-30 00:14:59
阅读次数:
204
第几是谁?
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述现在有"abcdefghijkl”12个字符,将其按字典序排列,如果给出任意一种排列,我们能说出这个排列在所有的排列中是第几小的。但是现在我们给出它是第几小,需要你求出它所代表的序列.
输入第一行有一个整数n(0
随后有n行,每行是一个整数m,它代表着序列的第几小;
输出...
分类:
其他好文 时间:
2014-10-20 08:42:05
阅读次数:
187
续上个unkown,这里mark一下,接下来觉得还有可能考到,且自己不会的东西(或不太会)数学方面: 随机化,概率,简单的几何计算,杂七杂八的数论,组合数学中的差分,康托展开,高斯消元,线性规划树: 最近公共祖先,树上倍增,DFS序列,树链图: 差分约束!强连通分量,欧拉回路字符串: tries树!...
分类:
其他好文 时间:
2014-10-16 16:09:22
阅读次数:
174
题目在此
思路:很经典的搜索。时间比较紧,用map会T。hash函数用了 康托展开。
#include
#include
#define INF 99999999
using namespace std;
struct S{
int pos,mp[9],step;
bool operatorp.s...
分类:
其他好文 时间:
2014-09-26 23:08:48
阅读次数:
312
八数码问题。
BFS+康托展开。康托用来判重。直接搜的的话会超时。需要预处理。
我就用结构体存了一个状态。
struct lx
{
int can;//当前状态的康托展开
int pcan;//上一状态的康托展开
int k;//移动方向
};
把所有的 181442 种状态存下来。排序,然后二分搜索。迭代寻找上一状态,直到初始的 0 。
...
分类:
其他好文 时间:
2014-09-16 17:21:40
阅读次数:
181