摘要: 康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。 以下称第x个全排列是都是指由小到大的顺序。 公式 X=a[n]*(n-1)!+a[n-1]*(n-2)!+…+a[i]*(i-1)!+…+a[1]*0! 阅读全文
posted @ 2016-06-21 09:03 FuTaimeng 阅读(337) 评论(0) 推荐(0)
摘要: 启发式搜索:启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无畏的搜索路径,提到了效率。在启发式搜索中,对位置的估价是十分重要的。采用了不同的估价可以有不同的效果。 估价函数:从当前节点移动到目标节点的预估费用;这个估计就是启 阅读全文
posted @ 2016-06-20 15:51 FuTaimeng 阅读(385) 评论(0) 推荐(0)
摘要: 题目分析:将当前层定义为第h层,共用了n块积木,本层积木数为m,f(h,n,m) 那么可以扩展数两种状态:f(h-1,n-m,m-1),f(h-1,n-m,m+1) 直接搜索可能的数据达到h^m,超时超空间。 通过记录中间状态减少重复计算,同时剪枝:所有n个积木搭h层,每层积木平均数1<x<10, 阅读全文
posted @ 2016-06-20 10:53 FuTaimeng 阅读(314) 评论(0) 推荐(0)
摘要: dfs搜索每个字母对应的数字 剪枝: 1.当一列上三个数a b c都已知时,如果 (a+b)%n!=c && (a+b+1)%n!=c 剪枝(+1是考量进位,注意&&) 2.考虑到我们根据每排数据剪枝的,我们可以改变一下搜索的顺序,按照字母从上往下,从右往左出现的顺序来搜 3.因为我们是从最低位开始 阅读全文
posted @ 2016-06-19 22:29 FuTaimeng 阅读(187) 评论(0) 推荐(0)
摘要: 1.读入图,边是双向的 2.递归建树,同时确定每一层的节点 3.dfs按层搜索,先把这一层所有被传染的(die[pa[k]]=true的)的die置为true 然后循环,每次把一个die为true的变为false,表示断开这条边,继续dfs dfs的最后记得把这一层die的全部置为false(查了一 阅读全文
posted @ 2016-06-19 20:02 FuTaimeng 阅读(190) 评论(0) 推荐(0)
摘要: 主要是优化搜索顺序 从选择较少的点开始,可以大大提高效率 在search(x,y)找点的时候,对于一个空点(x y),设置一个评分score: score=min{ 横线x上能填的数字个数,竖线y上...个数,所在大方块中...个数 } 选取score最小的点搜索 代码: 阅读全文
posted @ 2016-06-19 11:16 FuTaimeng 阅读(355) 评论(0) 推荐(0)
摘要: dfs搜索+剪枝 1.原棒可能的长度len:最长的小棒<=len<=所有小棒长度和sum and sum%len==0 2.dfs的参数:len、leftlen当前要拼的原棒剩下的长度、num剩下的小棒的个数、last上层dfs用的小棒序号+1,为避免重复,这次从last向后试探 3.剪枝: 1剪枝 阅读全文
posted @ 2016-06-19 11:10 FuTaimeng 阅读(271) 评论(0) 推荐(0)
摘要: 1710 生日蛋糕(1999 noi) 1999年NOI全国竞赛 题目描述 Description 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。 设从下往上数第i(1<=i<=M)层蛋糕是半径为Ri,高度为Hi的圆柱。当i<M时,要求Ri>R 阅读全文
posted @ 2016-06-17 16:37 FuTaimeng 阅读(457) 评论(1) 推荐(0)
摘要: Blah数集 大数学家高斯小时候偶然间发现一种有趣的自然数集合Blah,对于以a为基的集合Ba定义如下: (1) a是集合Ba的基,且a是Ba的第一个元素; (2)如果x在集合Ba中,则2x+1和3x+1也都在集合Ba中; (3)没有其他元素在集合Ba中了。 现在小高斯想知道如果将集合Ba中元素按照 阅读全文
posted @ 2016-06-16 14:09 FuTaimeng 阅读(1906) 评论(0) 推荐(0)
摘要: 练习:codevs 3066 中缀转后缀 题目描述 Description 给你一个中缀表达式,请你转换成后缀表达式 输入描述 Input Description 一个中缀表达式 输出描述 Output Description 一个后缀表达式 样例输入 Sample Input ((5+7)/3*7 阅读全文
posted @ 2016-06-16 10:18 FuTaimeng 阅读(1944) 评论(0) 推荐(0)