首先离线建出两棵树,对树$B$中每个点预处理出其往上$2^k$步的父亲以及中间的串的Hash值。 通过这个可以在$O(\log n)$的时间内比较两个串的字典序,以此将它们按字典序排序。 然后将树$A$压缩成Trie,并求出根到每个点的Hash值,同时预处理出每个串在$B$数组中出现的区间。 具体的 ...
分类:
其他好文 时间:
2017-04-14 10:02:21
阅读次数:
265
若x与y可能成为好*友,那么它们连出去的点除了x和y之外都相同。于是给每个点一个long long的随机权值,然后每个点的hash值为与其相连的点的权值的异或和,若两个点hash值相等,则可行。给每个点的hash值异或上自己本身的权值再求一次即可得到正确答案。时间复杂度$O(n\log n)$。#i...
分类:
其他好文 时间:
2015-09-21 00:05:35
阅读次数:
125
题目大意:给出平面上的n个点,问能组成多少个正方形。
思路:一开始看时间3秒半,就想用set水过,然而失败了。没办法手写hash吧。观察坐标的范围,
CODE:
#include
#include
#include
#include
#define MAX 1010
using namespace std;
struct Point{
int x,y;
...
分类:
其他好文 时间:
2014-11-04 15:02:02
阅读次数:
156
Hash在信息学竞赛中的一类应用中的某道例题"不难想到的算法是使用两个字符串分别表示两棵树,但是如果使用Hash的话应该怎么做呢?可以使用一种类似树状递推的方法来计算Hash值:对于一个节点v,先求出它所有儿子节点的Hash值,并从小到大排序,记作H1,H2,?,HD。那么v的Hash值就可以计算为...
分类:
其他好文 时间:
2014-09-02 22:34:55
阅读次数:
235
背景:
一致性Hash用于分布式缓存系统,将Key值映射到具体机器Ip上,并且增加和删除1台机器的数据移动量较小,对现网影响较小
实现:
1 Hash环:将节点的Hash值映射到一个Hash环中,每个Key顺时针第一个找到的节点,就是这个Key被路由到的机器
2 "虚拟节点":将节点虚拟成多个"虚拟节点"分布在Hash环上,使得分布更均匀,扩缩容影响较小...
分类:
其他好文 时间:
2014-06-07 14:26:39
阅读次数:
256