![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
哈希
文章平均质量分 76
GooMaple
这个作者很懒,什么都没留下…
展开
-
UVa 10391 - Compound Words
好久没有1Y了 ~~~hash来做,先将所有字符串存入哈希表,然后将每一个字符串分成两个子串,分成的两个子串能在哈希表中找到,则其为“compound words”,将其输出。代码如下:#include #include #include #include #include #include using namespace std;const int MAXSIZ原创 2012-10-16 18:32:07 · 1231 阅读 · 0 评论 -
UVa 10125 - Sumsets
方法一:可以暴力枚举,其实用枚举方法水过纯属意外。(可以试一下1000个1这组数据,它是跑不出来的。)方法二:可以将问题转化为 a+b=d-c。这样,只要将a+b的值全部算出来,存至哈希表内,再枚举d,c的值看两边是否相等从而推出d,就可以将复杂度由O(n4)降之O(n2)左右的水准,便可以过了。代码如下:方法一(枚举 1.600s):#define test#include原创 2012-10-16 23:00:33 · 2249 阅读 · 1 评论 -
UVa 10591 - Happy Number
题意:将给出数各个位上的数字的平方和加起来得到新的数字,依次往下推新数字,直到得到得到数字1(Happy number)或是与之前重复的数字(unhappy number)。利用哈希表查找判重或是直接打表,因为输入最大是10的9次方的数字,因此得出的数字最大为9*9*9 = 729。代码一(hash 0.020s):#include #include #include #in原创 2012-10-07 14:22:25 · 899 阅读 · 0 评论 -
UVa 10887 - Concatenation of Languages
将A集合的词与B集合中的词按要求合成一个词,然后利用哈希表判重。代码如下:#include #include #include #include #include #include using namespace std;const int MAXSIZE = 2250002;int num, head[MAXSIZE], next[MAXSIZE];char a[15原创 2012-10-17 23:30:26 · 1462 阅读 · 1 评论 -
UVa 321 - The New Villa
本来想用bfs(房间的状态)+dfs(灯的状态)+哈希的,但最后发现同一个房间可以反复进好几次以实现部分灯的开关,这样的话每一步都dfs其代价就会很大。参考了其他人的程序,用纯 bfs+哈希(记录状态共有10*2^10) 足矣。代码如下:#include #include #include #include #include #include using namespace原创 2012-10-28 23:54:50 · 1067 阅读 · 0 评论 -
UVa 10603 - Fill
倒水问题,bfs+哈希,需要将每一步的总倒水量全部存起来,最后再排一次序,将小于等于d 的最大的d及其匹配的总到水量输出即可。代码如下:#include #include #include #include #include #include using namespace std;const int MAXSIZE = 250003;const int p1[6] =原创 2012-10-27 15:05:39 · 755 阅读 · 0 评论 -
UVa 10085 - The most distant state
八数码问题的变形,bfs+哈希,打印路径时花了点时间,用哈希表next数组的原理进行回退就可以将问题解决。代码如下:#include #include #include #include #include #include using namespace std;const int MAXSIZE = 1000003;const int dx[4] = {-1, 1, 0原创 2012-10-26 21:34:16 · 810 阅读 · 1 评论 -
UVa 10422 - Knights in FEN
刚开始审错题以为是“上下左右”四个方向走,结果编出来以后,样例都没跑过,又仔细审了审题,才明白过来,骑士的走法与国际象棋骑士的走法一样,按'日'字走。方法比较简单,因为数据量比较小,DFS回溯+哈希判重足矣。代码如下:#include #include #include #include #include #include using namespace std;c原创 2012-10-25 18:54:51 · 1207 阅读 · 3 评论