hash
文章平均质量分 77
sdj222555
这个作者很懒,什么都没留下…
展开
-
POJ 1186 hash 线性探测再散列
一直以来我都觉得线性探测再散列这个方法一定很低效 结果碰到今天这题之后我惊奇的发现 链表居然被线性探测再散列秒杀了 这个hash方法是将大数取模,放到一个位置上,如果这个位置被占用了,就往后移1格,再被占再移动知道能 放到某个位置上。详细见数据结构书 真是太神奇了 懒得写DFS 直接for的 所以代码看起来比较多,但是也比较直观了 #include #include #i原创 2012-08-18 14:19:00 · 1359 阅读 · 0 评论 -
POJ 3349 Snowflake Snow Snowflakes hash表
题目大意是给出n组序列,判断其中是否有同构的 同构的定义是,若一个序列中,从某个位置往左读,到头后从最后边接着往左读到起点,或者同理往右读,能够跟另一个序列一样,就表示两个序列是同构的。 那么,由于n是巨大的,常用的做法就是哈希表了 将序列映射成某个值,然后判断。 由于序列中存在一些较大的值,使得哈希的难度增大,这里我们采用的方法是,先使用一个比较容易想出来的哈希操作,然后对于哈希值相同的原创 2012-02-07 17:21:29 · 864 阅读 · 0 评论 -
POJ 1840 Eps 简单Hash
a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0 对于这个等式,给出了a1到a5,最后求有多少组X1---X5满足这个等式,其中所有的Xi都是不能等于0的。 然后每个Xi的范围是-50到50。这个数据范围是能hash的保证。 分成两组,前3个X是一组,后两个一组。 /* ID: sdj22251 PROG: LANG: C++ */ #include原创 2012-04-03 14:04:46 · 1067 阅读 · 0 评论 -
POJ 1077 Eight A*算法 IDA*算法 康拓展开
这道题是一道经典的搜索题 第一次做A*算法的题目 这道题需要知道的,第一是怎样把全排列转换为数字,第二是h函数的设计 全排列转化为数字用到的是康托展开,跟逆序数有关,这是一个比较经典的转换。转换成数字的目的就是为了状态的判重,所以A*算法的空间需求总是指数级的 h函数用的是曼哈顿距离的总和,然后f=g+h,g函数就是从初始状态到现在状态花费的步骤数了。 然后使用优先队列,进行BFS。原创 2012-02-04 20:47:07 · 2843 阅读 · 1 评论 -
POJ 1200 字符串hash
这题没说n的范围。不过根据推测应该是不会很大,否则肯定会TLE 不过这样它仍是一道好题,题的好坏跟难易度没有太大的关系。关键是想法很重要 这题巧妙在将字符串看做一个nc进制的数,很显然,如果两个数在nc进制下不同,在十进制下也是不同的 然后根据这个转成10进制来搞就行了 #include #include #include #include #include #include原创 2012-08-18 15:11:53 · 1052 阅读 · 0 评论 -
POJ 2946 字符串hash + BFS
题意就是给出一个地图。有一个起点,一个终点 我们要从起点到终点去。但是地上有毒液,不能走,不过有一些箱子可以供你跳来跳去。这些箱子的高度是2,3或者4 然后每次跳一步只能去4个方向相邻坐标的箱子。箱子之间不用管高度是多少,只要相邻了就可以跳上去 而且箱子可以放倒。也是4个方向,放倒后的长度就是之前的高度,但是放倒一次后就不能再放倒了。我们可以规定此时的高度为1。而且放倒必须是有确切的那么多空原创 2012-09-14 18:53:46 · 1325 阅读 · 0 评论 -
POJ 3690 Constellations 简单hash
题目大意就是给出一个n * m的矩阵,矩阵中只有一些*或者0 n 然后有t (t p,q是提前固定的数值。 问这些询问中能是大矩阵的子矩阵的有几个 由于p , q都小于50,而且矩阵中只有两个字符 不由得让我们联想到了,把每一行给hash成一个long long 的二进制数 首先,我们把大矩阵每个位置为起点的q长度的串hash成二进制数都存起来 每次询问的时候,把小矩阵原创 2012-09-16 10:53:47 · 2335 阅读 · 0 评论