哈希游戏- 哈希游戏平台- 哈希游戏官方网站
首先你得会写链式前向星(即链表/邻接表,常用于存储图)。将一个字符串看成255进制数,然后把它转成十进制数,并找一个大质数对该十进制数 取模。这里你也可以使用秦九韶算法(很简单,可以百度,名字高端了一点;如果不会你怎么转的k到10进制就怎么转233),就能获得这个字符串的 哈希值了。 然后如何判重?两个字符串的哈希值相同就证明这两个字符串相同——原本应该是这样的。但由于取模,确实可能出现两个字符串hash值出现重复的 情况。这时我们就需要套个邻接表,给每个哈希值下的字符串都判断一遍。如果没有字符串相同,再往这个哈希值下插入这个字符串,并计数加一。 事实证明,哈希值冲突的情况不多,如果链式前向星写得熟那更是万无一失。Luogu评测耗时为500ms左右,比很多评测记录还是快很多。如果只是 一般的Hash,我觉得用这个基本上就够了的说....=、=想办法把要记录的状态转成k进制数,再转成10进制数对大质数取模,然后套进邻接表来判重。 代码复杂度不高,而且效率也不差。 怎么把字符串在邻接表里套进同一哈希值?嗯....你把它看作图论里的插边。我觉得这两种东西差不多。 所谓的大质数....嗯嗯,我不管那么多的,我直接1000013就做了。如果想要靠谱一点的大质数....百度哇。 下面是代码。