- 博客(60)
- 资源 (4)
- 收藏
- 关注
转载 Segment Sieve
地址:http://www.geeksforgeeks.org/segmented-sieve/针对简单Sieve方法筛选素数时空间耗费过多的问题进行改进,从原来的O(n)降低为O(sqrt(n)).Segmented SieveGiven a number n, print all primes smaller than n. For example, if the
2015-11-25 15:57:33
656
原创 Euler's Totient Function(欧拉函数)
定义欧拉函数ϕ(n)=count(p),p∈[1,n] AND gcd(p,n)=1\phi(n)=count(p),p\in[1,n]\ \mathrm{AND} \ gcd(p,n)=1,其中count(p)count(p)表示满足上述条件pp的数目。公式ϕ(n)=n∏p|n(1−1p)\phi(n)=n\prod_{p|n}(1-\dfrac{1}{p}) 其中,pp是nn的质因子(nn能
2015-11-25 12:03:47
1146
转载 错排数
Count Derangements (Permutation such that no element appears in its original position)A Derangement is a permutation of n elements, such that no element appears in its original position. For example, a
2015-11-23 19:53:57
719
原创 快速幂取模运算(Modular Exponentiation)
不考虑取模的快速幂运算(迭代法)/* Iterative Function to calculate (x^y) in O(logy) */int power(int x, unsigned int y){ int res = 1; // Initialize result while (y > 0) { // If y is odd, multip
2015-11-08 14:50:00
1101
原创 图的前插表示法(基于数组实现)
一般的表示方法矩阵表示法:将所有点对的关系存储到一个矩阵中,如果树有NN个点,那么需要开辟N∗NN*N大小的矩阵基于地址(或者vector容器)的链表法:将与点AA有关的边存储到AA的链表。一般选择这种方法,但是该方法需要不断的重新开辟新空间。随着图的节点增加时,需要为新节点创建空间,并添加到对应的链表中。在需要重复构建不同的图的问题中,上面两种传统的方法,或者(图的数据结构)显得效率不高。分
2015-11-08 14:07:16
468
原创 POJ3764:The xor-longest Path
题目链接http://poj.org/problem?id=3764解题要点树结构内任意两点u,vu,v间的路径权值异或和f(u,v)f(u,v),具有如下性质 f(u,v)=f(root,u)xorf(root,v)f(u,v)=f(root,u)\quad xor\quad f(root,v) 其中,rootroot是根结点。找到所有节点与rootroot的路径权值异或和f(root,i
2015-11-07 17:11:41
571
原创 Find the maximum subarray XOR in a given array
geeksforgeeks的一篇文章: http://www.geeksforgeeks.org/find-the-maximum-subarray-xor-in-a-given-array/题目大意给你一个大小为NN的数组AA,元素0<=Ai<=2310<=A_i<=2^{31},即AiA_i是一个32位的非负整数。请寻找数组内异或和最大的连续子数组。注意:题目要求的是子数组,其中元素必须是连续
2015-11-06 17:13:22
1145
原创 检测一个数组能否表示二叉搜索树(BST)的先序遍历
GeeksforGeeks的文章: http://www.geeksforgeeks.org/check-if-a-given-array-can-represent-preorder-traversal-of-binary-search-tree/题目大意:给你一个整形数组AA,大小为NN。你需要判断数组AA是否可能是一个二叉搜索树的先序遍历结果。题目分析:题目只需要你判断可能性。因此,我们需要
2015-11-04 19:13:19
1024
原创 Beautiful Array
题目大意:一组整数AA,数组大小为NN。如果数组中所有元素相等,那么该数组称为“完美数组”(Beautiful Array)。现在给你一个“不完美”数组AA,并且你可以进行下面两种操作: 1. 选择不同的两个元素Ai,AjA_i,A_j,其中i≠j,1≤i,j≤Ni\neq j, 1 \leq i,j\leq N。对一个+1+1,对另一个−1-1(不分先后)。花费:kk元。 2. 选择一个元素A
2015-10-19 08:38:08
1232
转载 Basic Binary Indexed Tree
Advantages of BIT: - Use less memory than RMQ - Easy to code - Can be used in many problems about number sequence - Runtime: O(logN)
2015-10-18 12:18:04
314
转载 减小数组
转载网址:http://www.geeksforgeeks.org/find-minimum-possible-size-of-array-with-given-rules-for-removal/Find minimum possible size of array with given rules for removing elementsGiven an array of
2015-10-16 20:45:50
404
原创 XOR Groups
题目要求:给出一个整数组数AA,大小为NN。然后,将数组AA分割为两个部分A1A_1和A2A_2,且满足条件A1∩A2=∅A_1 \cap A_2 = \emptyset,A1∪A2=AA_1 \cup A_2 = A,A1,A2≠∅A_1,A_2 \neq \emptyset。计算有多少种分割方法,使得Xor(A1)=Xor(A2)Xor(A_1) = Xor(A_2)。其中,Xor(A1)=Xo
2015-10-16 11:11:48
456
原创 Find the Duplicate Number
Find the Duplicate Number(寻找重复数)问题定义给定一个数组AA,大小为N+1N+1,且所有元素均来自前NN个自然数(1,2...,N)(1,2...,N)。显然,必然存在一个元素Ai∈(1,2,...N)A_i\in (1,2,...N)出现两次以上,且我们规定有且只有一个元素出现两次以上。下面在分析时,将数组元素全部减一,方便描述和理解。要求: 1. 不可改变数组AA的
2015-09-30 20:25:42
457
原创 插入排序中元素的移动次数
题目大意:根据插入排序算法的原理,计算每个元素的移动次数。例如:数组A=[2,1,3,1,2]A=[2, 1, 3, 1, 2],那么按从左往右的顺序依次移动插入元素,他们的移动次数分别如下: shift(2)=0,shift(1)=1,shift(3)=0,shift(1)=2,shift(2)=1shift(2)=0, shift(1)=1, shift(3)=0, shift(1)=2, s
2015-09-17 21:57:43
5869
原创 最长递增子序列的nlog(n)算法
最长递增子序列问题定义解决思路测试题目问题定义输入 一个非空整数数组AA,数组大小为NN。输出 数组 AA中最长递增(严格递增)子序长度。其中,子序可以是不连续的。解决思路动态规划 动态规划的方法可以参考 《编程之美》里面第二章16题。 核心思路:每增加一个新元素时,寻找比其小的所有元素,并找出以这些元素为结束的递增子序里长度最大的加一(此结果是以新元素结尾的最长递增子序的长
2015-09-12 17:17:27
699
原创 范围最大异或值
题目大意:给定范围 L题目连接:https://www.hackerrank.com/challenges/maximizing-xor题目解析:思路一: 如果问题的规模(R-L)很小的话,那么两层循环枚举所有情况是不错的解决方案。思路二: 如果问题的规模(R-L)较大,那么暴力枚举失效。这里给出位操作的方法,过程如下: 设
2015-09-12 11:05:57
1172
原创 AVL平衡树
AVL平衡树是一种二叉搜索树,且每个节点保持平衡。节点平衡的标准是节点的左右子树高度的差属于[-1, 0, 1]之一。另外,树的高度等于从根结点到最深叶子节点的步数。特别地,root=NULL,高度=-1;叶子节点的高度等于0。如果树种某节点不满足节点的平衡标准,那么需要对不满足标准的节点进行旋转。总共分四类:left-left,left-right,rig
2015-08-30 21:54:49
400
原创 codility minAveTwoSlice
题目网址:https://codility.com/programmers/lessons/3题目大意:求一个数组中连续子段的最小平均值所对应的段落开始的下标,且下标最小(因为存在多种最小平均值的可能)。另外,输入数组的元素个数最小为2题目分析:刚看到题目的第一反应是“两个指针”的思路,但是在分析后发现,没有明显地升降规律。于是,考虑网上的答案,有如下面的解法。
2015-08-07 16:25:40
389
原创 KMP字符串匹配算法的伪代码
KMP算法的图解:http://blog.csdn.net/u010232171/article/details/41945605图解中的减法操作与下面的伪代码不同,应该以下面的代码为准KMP算法的next数组求解:http://blog.csdn.net/u010232171/article/details/41961837下面的伪代码出自《算法引论——
2015-07-03 10:51:35
3220
原创 POJ 1703
题目链接:http://poj.org/problem?id=1703题目大意:两组犯罪团体,抓住N个人,他们属于且唯一属于两组犯罪团体之一。然后,给你M条信息,也分两类。D类信息说明id0和id1是不同组织的,A类信息是询问id0和id1的关系,包括不同组织,相同组织和无法判断。解题思路: 并查集,但简单并查集思路与该题目不符合。因为简单并查集会告诉你两个目标是相
2015-06-21 15:10:28
431
原创 河内塔, 平面上的直线和约瑟夫问题的公式列表和出处
1. 河内塔(汉诺塔) 概念:http://zh.wikipedia.org/wiki/%E6%B1%89%E8%AF%BA%E5%A1%94 定义:n表示圆盘数;T(n)表示n个河内塔需要的最少搬运次数。 递推公式:T(n) = 2*T(n-1) + 1 通项公式:T(n) = (2^n) - 12. 平面上的直线 概念:n条直线可以
2015-06-01 16:54:56
1676
原创 POJ 2393 Yogurt factory
题目连接:http://poj.org/problem?id=2393题目大意: 酸奶工厂需要生产酸奶,共N周。同时,酸奶每周单位重量的价格Price不一样,且每周的需求量needs也不同,但是可以存储酸奶(一周生产多周的酸奶)且不考虑腐败的情况,存储酸奶的价格是每周每单位重量酸奶需花费S,即本周生产的酸奶多于本周的需求,则需要花钱存储起来。问:最低成本是多少?
2015-06-01 16:17:46
612
转载 如何评价全栈工程师
下面这篇文章属于转载,先给出出处:http://www.csdn.net/article/2014-01-21/2818203-Full-Stack-Engineer读过之后,最深刻的感觉是全栈工程师不应该被简单理解成一种职位,或者说把它只当做IT技术大拿是片面的。全站工程师更多体现的是一种精神,一种做成一件事,实现自己脑海中的那个梦想的时,你全力以赴的冲劲。所以,应该给自
2015-05-24 22:26:52
860
原创 POJ 3009
题目链接:http://poj.org/problem?id=3009题目大意:在一个矩形游戏盘上,有石头,冰球,终点,起点。规则:上下左右抛出冰球,且抛出后除非碰到石头或终点,否则不停止。如果出界或者连续抛出10次以上就算失败。另外,冰球不能从紧挨着石头的一方抛出;一旦冰球碰到石头,则立即停止,石头消失,然后可以进行下一次抛出。题目的思路是深度优先遍历,但是做了两晚也没做
2015-05-21 21:54:27
285
原创 POJ 1979
题目:http://poj.org/problem?id=1979解题方法:深度优先算法注意问题:字符输入时,回车键也会被当做有效字符输入,所以影响整体的输入。解决方法:在scanf的一开始加上\n,其作用是刷新输入流的内容,保证之前留下的回车键不影响后面正确字符的输入。代码如下:#includeconst int HMAX = 20;const int WMAX
2015-05-19 23:54:50
506
原创 十进制转二进制
声明:最后一种降幂法颇具魅力,而且与方法二有异曲同工之妙十进制转二进制的几种方法输入:一个无符号的十进制整数输出:对应十进制的二进制显示 例如:input=10,output=1010 方法一:除二取余法 Forinput!=0 Cout Input/=2;End 输出顺序从低位0到高位(最高的1)依次输出 方法二:位运算
2015-04-28 20:40:48
1035
原创 逆波兰表达式
逆波兰表达式是一种表示运算式的方法,又可以称作后缀表达式,与之相对的是中缀表达式。例如:中缀表达式:a+b*c,后缀表达式:abc*+。这里的例子简单,但是基本表达了两种方法的不同。 下面给出包含“+-*/”以及“()”五种运算符的中缀表达式转后缀表达式的算法流程:1. 优先级的规定:"()">"*/">"+-",其中"*"=="/","+"=="-"。2. 输入一组表达式F
2015-04-28 14:58:30
489
原创 POJ 1423 BIG NUMBER
题目连接:http://poj.org/problem?id=1423题目大意是给一个输入m,计算F(m!)(m的阶乘)的位数,即F(3!)==1,F(4!)==2对于此类题目的第一反应:这个是一个数学问题。 既然是数学问题,那么在思考或者搜索资料时的关键字不是题目的标题,而是阶乘的计算公式。当然,网上会给出最一般的连乘表达式,这不是我们需要的,应该
2015-04-27 18:04:10
486
原创 大数阶乘问题
问题: 计算非负整数N的阶乘(N!),其中0分析: 阶乘运算即连乘1到N,且随着N的增大,乘积飞速上涨。可以知道N=10000时阶乘结果的位数为35660位。因此,计算上普通类型无法用一个变量表示这么大的值,因此想到用整形数组去表示阶乘的结果。ps:最开始闪现在脑海里的想法是用字符串表示,但是仔细想想,如果是这样的话,应该会非常慢,因为字符和数字间的转换需要
2015-04-19 16:23:41
421
转载 编程珠玑之第二章:杂耍算法
本文系转载链接 http://www.cnblogs.com/solidblog/archive/2012/07/15/2592009.html作者在文中的证明思路清晰,不过我只看懂了辗转相除法的证明,杂耍的证明未看懂,但是仔细模拟杂耍算法的过程会有比较直接的体会。问题:将大小为n的数组向左移动i位基本原理: 1)先将x[0]移到临时变量t中 2)将x[i
2015-04-09 20:42:44
697
原创 longest valid parentheness 最长有效括号问题
https://leetcode.com/problems/longest-valid-parentheses/题目要求: 输入一个字符串s,里面在只包含两种字符 '('和 ')',例如s=“(()))(()” 找到最长的一个子串,且其包含的括号成对合法出现,例如s中的第2到3个字符子串“()”,但它不是最长的,最长的是第1到4个字符子串“(())”。解
2015-03-29 17:20:41
943
原创 无向图的割点(关节点)
无向图的割点,也称关节点。对于无向图中不同的两点u,v,如果必须经过点w,才能构成一条从u到v的路径,那么称该w点就是割点(关节点)。关节点的求解只需要一次关于图的深度优先遍历(完成一次DFS等于生成一棵树,第一个访问的节点是根结点)。在这次DFS中,按照遍历的顺序记录每个点i的a,b表。其中,a表和b表的计算如下:a[i]=predfn ; //predfn是点的深度遍历访问顺序,在
2015-03-09 11:04:37
2456
1
转载 自学成才 16个非常优秀的在线教育网站
本文转自该链接http://www.csdn.net/article/2015-02-05/2823859/1软件开发是一项非常复杂且有趣的工作,开发者需要在规定的期限内完成需求开发,并且把产品交付给客户。与此同时,开发者也不断学习各种编程知识,了解最新的技术动态。当然,学习的途径有很多种,比如购买书籍或者看视频。在线资源最大的优势就是不断更新,取经去糟。本文提供16个
2015-03-04 08:57:32
793
原创 struct结构体和union联合体:字节对齐下的sizeof返回
首先,明白什么是struct结构体,什么事union联合体,以及sizeofstruct和union都属于复合数据结构,其中可以包含多种数据类型,包括int,short,double,甚至数组和struct,union。既然是数据结构,那么一定需要开辟内存空间用来存储数据,接下来的一切计算过程都是在32windows系统环境进行的。struct和union的存储是有区别的,前者的内存是
2015-02-27 21:34:58
678
原创 最近公共祖先
#1062 : 最近公共祖先·一时间限制:10000ms单点时限:1000ms内存限制:256MB描述小Ho最近发现了一个神奇的网站!虽然还不够像58同城那样神奇,但这个网站仍然让小Ho乐在其中,但这是为什么呢?“为什么呢?”小Hi如是问道,在他的观察中小Ho已经沉迷这个网站一周之久了,甚至连他心爱的树玩具都弃置一边。“嘿嘿,小H
2015-02-01 21:49:15
310
原创 Trie树计算单词前缀的个数
时间限制:10000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能对于每一个我给出的字符串,都在这个词典里面找到以这个字符串开头的所有单词呢?
2015-02-01 19:31:58
701
原创 POJ 3974 Palindrome
Palindrome中文解释:回文题目链接:http://poj.org/problem?id=3974题目大意:求取字符串str中的最长回文的长度算法:Manacher时间复杂度O(N),空间复杂度O(N),N=strlen(str)。AC代码:#include#include#includeusing name
2014-12-30 16:38:32
332
原创 最长回文串的解法---Manacher算法
最长回文串的求解,顾名思义,给函数一个字符创str,在该字符串中找到最长的回文,例如:str=“abababc”,其中单个字母a,b,c都可以看做回文,其长度为1;aba,bab也是回文,长度为3;ababa,babab,也是回文,其长度为5。我们可以发现在一个字符串中有许多不同长度的回文,而我们的任务就是找到最长的回文的长度值,即5。最直接的方法就是以每个字符为中心向左右两边,同时扩展寻
2014-12-30 14:58:11
682
原创 Prime算法的代码
下面的代码在hiho上测试通过,题目的名字是:最小生成树--Prime算法该方法的时间复杂度是O(V^2),V是图中的节点数,这里的图是无向图,且连通。对于稀疏图来说,时间复杂度会变为O(ElogV),E为边数。下面的代码与挑战程序设计一书中的风格很像,分为两部分:1.更新结点距离2.寻找最短距离结点Prime算法的原理:将所有结点分为两部分:已在树中和未在树中从未
2014-12-28 22:34:59
950
原创 SPFA算法的实现
本文通过一道OJ题目来验证下面超链接中有关SPFA算法的内容SPFA算法原理: http://blog.csdn.net/u010232171/article/details/42061823 题目超链接: http://hihocoder.com/contest/hiho25/problem/1#include#includ
2014-12-26 13:13:55
395
算法设计技巧与分析(中文版)阿苏外耶
2015-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人