题意:给一个图,有些点之间已经连边,现在给每对点之间加边的概率是相同的,问使得整个图连通,加边条数的期望是多少。此题可以用概率DP+并查集+hash来做。用dp(i,j,k...)表示当前的每个联通分量的点数分别是i,j,k...(连通分量的个数不固定)时,加边的期望。这样以dp(i,j,k)为例分...
分类:
其他好文 时间:
2014-05-16 06:23:26
阅读次数:
312
字符串hash最高效的算法, 搜了一下,
原理是:字符串的字符集只有128个字符,所以把一个字符串当成128或更高进制的数字来看,当然是唯一的这里unsigned不需要考虑溢出的问题,
不过周神说:碰撞率很小是因为n阶多项式最多n个根. 也是有道理的.最后 hash & 0x7FFFFFFF 只是为...
分类:
其他好文 时间:
2014-05-15 16:53:27
阅读次数:
401
插头DP,多条回路求回路数。
可以当作模版来记。注重理解轮廓线。
#include
#include
#include
#include
using namespace std;
const int HASH=10007;
const int STATE=5000; //状态数
const int MAXD=15;
int code[MAXD],maze[MAXD][MAXD];...
分类:
其他好文 时间:
2014-05-15 11:23:33
阅读次数:
344
一个简单的consistent hashing的例子,很容易理解。
首先有一个设备类,定义了机器名和ip:
public class Cache
{
public String name;
public String ipAddress;
}
然后是主要的实现:
public class Shard {
//hash 算法并不是保证绝对的平衡,如果 cache 较少的话,...
分类:
其他好文 时间:
2014-05-15 06:56:41
阅读次数:
370
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,...
分类:
编程语言 时间:
2014-05-15 05:42:58
阅读次数:
641
未排序数组,O(N)时间,常数空间,这道题让我非常清晰的感觉到算法的魅力。
先想一下如果允许用额外空间的话,我们会怎么做,对,我们会建立一个hash表,然后从头到尾的扫描数组,等等,怎么映射呢?有n个数,要找第一个消失的正正整数,那么这个消失的正整数的取值范围是什么呢?[1, n+1],之所以包含n+1是因为如果这n数正好是连续的前n个自然数。那我们就知道了,开一个长为n的哈希表,如果当前扫到得...
分类:
其他好文 时间:
2014-05-15 03:45:41
阅读次数:
276
插头DP。
从左上角到右下角,每个格子都有Val,每个格子只能经过一次,可以不经过,求最大的分数之和。
#include
#include
#include
#include
using namespace std;
const int MAXD=15;
const int HASH=10007;
const int STATE=1000010;
int N,M;
int maz...
分类:
其他好文 时间:
2014-05-15 03:43:02
阅读次数:
175
散列表(Hash table,也叫哈希表),是根据关键字(Key value)而直接访问在内存存储位置的数据结构。也就是说,它通过把键值通过一个函数的计算,映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。
一个通俗的例子是,为了查找电话簿中某人的号码,可以创建一个按照人名首字母顺序排列的表(即建立人名x到首字母F(x)的一个函数关系),在首...
分类:
编程语言 时间:
2014-05-15 02:27:50
阅读次数:
497
1、Ring的基本概念
Ring是swfit中最重要的组件,用于记录存储对象与物理位置之间的映射关系,当用户需要对Account、Container、Object操作时,就需要查询对应的Ring文件(Account、Container、Object都有自己对应的Ring),Ring 使用Region(最近几个版本中新加入的)、Zone、Device、Partition和Replica来维护这些信...
分类:
其他好文 时间:
2014-05-14 15:22:15
阅读次数:
1213
今天再看这个题时,死活想不起这个单词是什么意思,查了字典都不知道,真晕了。
这个单词直译是颠倒顺序所形成的单词,实际上就是从集合中找出所有是由一组字母形成的那些单词,这种可以由很多组,即只要这组字母形成的字典中的单词多于1个,就要把这些单词输出出来。
怎么做呢?思路还是很简单的,要找出是由一组字母形成的单词,显然应该知道每一个单词是由哪些字母形成的,这当然可以建一个hash表,每次都比对has...
分类:
其他好文 时间:
2014-05-14 15:12:04
阅读次数:
296