2010年7月21日
摘要: (1) 计算阶乘末尾第一个非0数字:这是一个比较经典的问题,比较复杂的算法是利用一个艰难的数学公式,可惜我不会,从网上的资料学习中,整理出下面这个简单易懂的算法:观察n!,可以发现在乘的过程中,对于任意 n > 1,n!的末尾第一个非0数字都是偶数。我们只需保留最后一位非零数。当要乘的数中含有因数5时,我们可以把所有的因数5都当作8来乘。这是因为:...x2*5=...10(舍)或...60... 阅读全文
posted @ 2010-07-21 23:23 looker 阅读(395) 评论(0) 推荐(0) 编辑
摘要: AC自动机,名字很酷(我就是奔着这名字去的),其实就比字典树多了一个fail指针,什么是fail指针呢,就是串对字典树匹配失配时字典树节点下一步往哪指。是不是和KMP有点像,呵呵,没错,就是KMP的思想,假设该节点是u,它的fail指针指向v,v就是一个和u的字母一样,并且从根出发到v形成的字符串和从根到u的路径上的某一处到u形成的字符串相同的节点。呵呵,有点麻烦,其实求的时候就是一个递推的过程,... 阅读全文
posted @ 2010-07-21 11:14 looker 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 字典树,就是树形的字母排列,从根节点开始(根节点不代表任何字母),它的每一个子节点都有一个不同的字母,这样,从根节点开始沿任何路径到达一个叶子节点,路过的字母组合就是一个字符串,字典树在字符串的存储和查找上有很大的优越性,下面是用字典树写的两个题。hdu 1251 阅读全文
posted @ 2010-07-21 10:36 looker 阅读(456) 评论(0) 推荐(1) 编辑