- 博客(40)
- 资源 (2)
- 问答 (10)
- 收藏
- 关注
原创 NYOJ14——贪心
1.题目描述:会场安排问题时间限制:3000 ms | 内存限制:65535 KB难度:4描述学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,每个时间最多安排一个活动。现在小刘有一些活动计划的时间表,他想尽可能的安排更多的活动,请问他该如何安排。输入第
2016-08-31 17:57:43 304
原创 合并果子
为了防止抄袭代码,本人只供应伪代码1.题目:合并果子成绩10开启时间2013年03月19日 星期二 14:40折扣0.8折扣时间2013年03月28日 星期四 14:40允许迟交否关闭时间2013年06月30日 星期日 14:40
2016-08-30 12:01:41 694
原创 二分逼近/牛顿迭代——一元高次非线性方程求解
#include"iostream"#include"cstdio"#include"cstring"#include"cstdlib"#include"cmath"#define precision 0.00000001using namespace std;int count=0;//一元多次方程求解double function(double x){ return
2016-08-29 15:15:12 1577
原创 POJ1308——并查集
1.题目:Is It A Tree?Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 29735 Accepted: 10173DescriptionA tree is a well-known data structure that is
2016-08-29 12:17:33 600
原创 并查集总结
1.并查集:什么是并查集,我们将并查集称之为不相交集合,在处理例如查找几个元素是否属于相同的集合的时候我们使用并查集可以达到非常高的处理速度(在合并和查找方面),我们利用并查集的思想有一点很重要就是我们我们利用的森林(父亲表示树)来对不同的不相交集合的状态,我们利用每个集合的根作为代表元素来对整个集合的数据进行“牵一发动全身”的合并处理这里我们的额=编号和处理对都是整数,但是如果我
2016-08-29 10:06:27 951
原创 POJ1182——带权并查集
1.问题描述:食物链Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 64435 Accepted: 18933Description动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个
2016-08-28 20:28:22 794 1
原创 POJ1611-----并查集
1.题目大意描述:题目链接某一个学校存在0-N-1名学生,0号学生已经确认患病,我们会给出如下数据首先每组数据会开始输入两个数,第一个n代表学校的学生的数目,第二个m代表学校的社团的数目接下来m行代表m个社团的成员的情况,(注意接下来的每行的第一个数字代表社团的成员的数目,后面的数字是成员的编号)我们现在需要确认学校中有多少人确认患病2.算法:
2016-08-27 12:00:50 657
原创 POJ2524——并查集
1.题目描述:题目链接我们调查一所学校的宗教信仰我们询问m对人,看是否信仰相同,在这里,如果信仰相同,我们就对其进行合并操作就可以了2.算法:简单并查集,我们有两个思路好的思路:初始我们的宗教数目是所有的人的个数,如果我们要合并的时候,如果判断的二者宗教信仰相同,我们在unit操作中要对其二者进行合并操作如果目前二者判断是统一宗教并且我们没在同一族谱中,那么我们可以断定
2016-08-27 11:44:07 589
原创 环形链表+约瑟夫问题实现
1.问题描述:约瑟夫问题:已知m个人还坐在桌子上,从第k个人开始进行报数,报道第n个人出列,直达所有的额人都出列为止,求出出列的顺序2。数据结构:我们根据题意可以明显的发现,如果我们用环形链表来进行处理的话每次出队一人是非常好实现的,我们判断终点的条件就是环形链表内的权值为0在这里没什么好说的,我们只要注意一点就好了,有的书上并没有说明,但是当约瑟夫问题的头节点被删除之后,我们
2016-08-27 09:36:18 519
原创 微软面试百题017——哈希查找/优先队列
1.题目描述:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。2.算法讲解:本题中,我们需要一种数据结构可以让我们通过读取字符从而查找到对应的出现次数,并且我们要尽可能的提高查找的速度所以我们就会考虑到一种数据结构——哈希表,详情请点击点击打开链接我们都知道,通过哈希表,我们可以将存取的速度提高到O(1)的复杂度并且,题目中,我们是将字符映
2016-08-26 17:13:58 716
原创 微软面试百题016——BST层序遍历
1.问题描述:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。例如输入78/ \6 10/ \ / \5 7 9 11输出8 6 10 5 7 9 112.算法解决:对于层序遍历,其实说白了就是BST的广度优先遍历,我们采用的策略是建立一个队列,不断向叶子结点进行扩展,当队列为空的时候,我们显示的结果是BST已经被广度优
2016-08-26 16:28:11 678
原创 微软面试百题012——5050的各种限制解法
1.问题描述:题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。2.解法:2.1位运算:首先我们需要了解一下,在该操作中我们需要用奥的位运算有哪些首先,我们根据公式对式子进行化简原式=(n*n+n)/2首先对于最后的除以2操作我们直接调用右移操作就可以实现:在这里我解
2016-08-25 10:34:05 550
原创 线性表——线性表+抽象链表类+单向链表讲解
1.讲解:线性表两种分类:顺序表,链表线性表>记录(数据元素)>数据项顺序表:只有唯一一个节点只存在一个后继,不存在前驱,只有唯一一个节点存在前驱,不存在后继,中间所有的节点都存在位移的前驱和后继顺序表的优点:可以随机存取,方便访问,存储密度大,空间利用率高顺序表缺点:难以实现插入数据的操作,而且空间一旦定义就会固定,不能动态控制空间内存的大小链表的缺点
2016-08-24 17:46:36 560
原创 POJ 2676 数独 && 编程之美1.15
算法讲解:low逼算法DFS,这里如果不用空间换时间会TLE所以说我们加入三个判断矩阵hang[x][i] 第x行有没有出现ilie[x][i] 第i列有没有出现isq[x][y][i] 以x,y为首标号的子矩阵有没有i 然后总结一些常见错误:1.每次试探成功,hang,lie,sq都要更新2.我们如果不用bool类型的函数的话那么每次都要在试探语句下面加上
2016-08-24 10:34:50 384
原创 微软面试百题015——镜像翻转BST
1.题目描述题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。例如输入:8/ \6 10/\ /\5 7 9 11输出:8/ \10 6/\ /\11 9 7 52.算法思路:标准的递归思路,我们采用前序遍历的顺序,不断的对树进行翻转,知道遇
2016-08-23 21:55:45 807
原创 比赛总结
求解出从左上角到右下角的所有的路径的个数该题明显的是动态规划的求解思路首先:定义状态:dp[i][j]代表走到地图的i,j处的路径总数状态转移方程:根据定义来看,dp[i][j]=dp[i-1][j]+dp[i][j-1]这个状态转移方程是核心:含义是要走到map[i][j]的路径数等于走到map[i][j-1]处再走一步加上走到map[i-1][j]再走一步i
2016-08-18 22:40:05 530
原创 微软面试百题005——SBT再解第K数问题
1.题目描述:求一组数组中的第K大或者第k小的数2.算法:上一期我们通过了二叉堆来进行该问题的求解,非常的高效,我们通过O(n)就可以解决问题这一期我们通过SBT来解决:SBT详解我们通过SBT的select来解决问题会变得非常高效,如果不考虑剑术的时间,时间复杂度是O(logn),如果考虑建树是O(logn+n*logn)附上select函数代码:int SB
2016-08-18 15:18:45 667
原创 从BST到SBT(田劲峰老师论文读后感)6.
优劣:优点:查找的时间复杂度:O(logn)非常高效的查找速度缺点:对于存在部分有序的输入序列,会导致BST偏向于偏树,进而使得树的深度逐渐变大,导致查找速度不断退化,最坏的退化情况是退化成双向链表引出:对于BST的缺点,我们需要克服,我们最终需要的而是一种技能高效的查找数据又可以避免特殊的输入序列而导致的BST 的退化,所以这时候,我们引入了一种新的数据结构——自平衡二叉树,通过不同的操作,是的,这种进化过得BST可以拥有自动调节树高的能力,是的我们查找的时间复杂度稳定在O(logn)附近,避免
2016-08-18 08:28:08 1451 1
原创 编程之美1.14——连连看工程(含全部代码,伪哈希+BFS)
编程之美迄今为止最为详细的讲解,包含连连看游戏的C++所有代码片段伪哈希+BFS+动态规划绝对值得收藏,绝对值得浏览我是不是该开个竖屏的专栏了其余的扩展问题还在思索,会不定期的更新
2016-08-16 10:20:57 1327
原创 微软面试百题011——找数
1.问题描述:题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15 和数字15。由于4+11=15,因此输出4 和11。2.解法:1.首先我们按照升序排序2.添加头尾指针,sum和代表头尾指针对应的元素的和,如
2016-08-15 13:13:44 1141
原创 微软面试百题010——二叉树节点最大距离
1.问题描述:求二叉树结点中的最大距离(假设二叉树中节点都可以是双向的)2.思路:先援引一段很牛逼的英文:ANSWER:This is interesting... Also recursively(递归的), the longest distance between two nodes must be either from root to one leaf, or betw
2016-08-14 14:10:02 944
原创 编程之美1.2——将帅问题
1.问题描述:学过象棋的朋友一定不会陌生,中国象棋中规定了,将帅不能碰面,也就是说,将帅是不可能出现在相同的一列上的通过二重循环的遍历操作我们可以通过枚举的方法简单的求出将帅所有合适的位置组合,但是,现在的问题是,如何只利用一个字节的存储空间,将将帅所有的合适的位置信息都描述出来2.解析:(解法1)2.1本问题中,我们的核心问题在于如何利用一个字节来表示不同的位置信息首先我
2016-08-14 12:03:52 734
原创 微软面试百题009——按词反转句子
1.问题描述:翻转句子中单词的顺序。题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。2.解法:栈我们先将句子的内容保存下来,然后开辟一个栈,以单词为单位不断的pop出,这是最好考虑也是最噶小的做法
2016-08-13 23:14:32 917 1
原创 微软面试百题008——后序遍历找BST
1.题目描述:通过我们给出的一个后序遍历结果,找出一颗二叉树满足要求,找到了,返回true,没找到返回false2.解法:又是一道BST 性质和后序遍历结合的题:首先BST我们就不过多赘语了:BST总结我们这道题主要考的使我们的后序遍历的性质:我们对一个给出的后序遍历可以这么来理解:我们把后序遍历先拆开两块:后序遍历的划分特点A |B |C
2016-08-13 21:25:32 996
原创 KMP next数组优化的思路彻底解析
首先我们假设各位都已经了解了next数组的作用,在这里我们的next数组记录的是该位置之前的子模式串的最长公共前后缀非常浅显易懂的KMP算法讲解那么我们优化的思路就来了:这点优化的思路在于假设模式串中q号位置失配了,那么我们下一次要跳转到next[q-1]号位置进行匹配,但是如果pattern[q]==pattern[next[q-1]]的话,那么我们这一次的匹配还是失败的,我们需
2016-08-13 15:39:50 2165
转载 KMP算法总结(纯算法,为优化,没有学应用)
如果你看不懂KMP算法,那就看一看这篇文章( 绝对原创,绝对通俗易懂)时间 2014-03-09 20:32:21 CSDN博客原文 http://blog.csdn.net/u011564456/article/details/20862555主题 算法如果你看不懂 KMP 算法,那就看一看这篇文章 ( 绝对原创,绝对通俗易懂 )KMP 算法,俗称
2016-08-13 14:12:47 1299
原创 全排列生成算法
1.什么是全排列:我们假如有一串式子,排列组合的结果会有很多种,全排列就是按照字典序有序的将所有的排列组合的性质的陈列出来问题可以这么描述:对于给定的集合A{a1,a2,...,an},其中的n个元素互不相同,如何输出这n个元素的所有排列(全排列)2.求解算法:1.DFS(我们大多数人所谓的递归的方法):我们来这么看这个问题,加入有n个数据要进行全排列,我们可以假想我们
2016-08-11 23:06:25 1192
原创 UESTC 1252 24点问题 DFS
1.问题描述:24点就是给你一串数字,问你是否通过加减乘除括号构成24点。沈爷觉得这个很好玩,就决定考考你,给你44个数,可以交换位置,可以用加减乘除和括号,是否能构成2424点呢?注意哦~这里的除法并不是整数除法,比如样例Input第一行TT,表示有多少组测试数据,1≤T≤501≤T≤50接下来TT行,每行44个正整数a1a1, a2a2, a
2016-08-11 21:19:46 921
原创 微软面试百题007——链表相交
1.题目描述:给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。为了简化问题,我们假设俩个链表均不带环。问题扩展:1.如何判断链表存在环2.如果需要求出俩个链表相交的第一个节点列?2.求解:1.如何判断链表带环我们加入两个指针,一个快指针,一个慢指针,快指针一次前进2个单位,慢指针一次前进一个单位如果不存在环的话快指针会先扫描到NULL如果存
2016-08-11 09:56:50 940
原创 哈希表全解(简介+构造+冲突处理+查找分析计算+诸多要点)
目前参考了大量的优秀的大牛的博文自己总计的超详细哈希表1.哈希表的简介2.哈希表的哈希函数构造3.冲突处理4.查找分析计算5.C++完整实现代码
2016-08-10 22:09:42 3852
原创 微软面试百题005——堆实现求前k大/小的数
1.题目描述:请求出一组序列中的数中的前k小的数,或者前k大的数,问题很简单2.算法思路:该题利用顺序存储二叉堆可以很好的解决:首先我们先解释一下“堆”这个数据结构堆这个东西我们可以理解成是利用了二叉树的一条性质而人工构建的一组顺序存储二叉树分类:最小堆:每个父亲节点都比子节点小最大堆:每个父亲节点都比子节点大顺序存储实现的原理:二叉树存在一条性质,
2016-08-09 18:28:23 787
原创 微软面试百题004——指定BST路径和
微软面试百题0041.题目大意:给出一颗二叉查找树BST定义路径:从根节点出发到叶子节点终止视为一条路径定义路径和:路径上的所有上的节点的权值之和给定一个权值,请求出满足权值路径和的所有的路径2.解题思路:因为我们是要求解出所有的情况,所以很自然而然的我们就会想到深度优先遍历(DFS)我们从根节点开始,每次向下遍历至所有的根节点,满足条件打印一次(存储在余下
2016-08-09 16:21:01 573
原创 微软面试百题001——BST转化有序双向链表
微软面试百题001题解,超详细的解释内容,算法实现,以及本博主倾力打造的BST总结连接,绝对让想学之人有所学,言简意赅,赚的就是回头客
2016-08-06 14:40:14 3061
原创 树及二叉树
1.基础概念:树是一种扩展性的数据结构,体现在树额一对多的方面上一.树的表示方法1.双亲表示树:结构体包含数据域和指向双亲的指针域,我们也可以添加指向长子的指针域和只想有兄弟的指针域2.孩子表示树:两种结构体,一种结构体建立出顺序的数组结构,保存数据域和指向孩子的指针域 第二种结构体,包含有指向对应的孩子的指针域,还包含指向与其有相同的双亲的兄弟的节点
2016-08-04 16:59:46 489
从零开始学SBT
2016-08-18
关于python迭代器的问题
2017-02-10
关于python迭代器的问题
2017-02-10
关于floyed算法实现的问题
2016-11-26
关于RSA的一些问题,急求解答
2016-11-06
关于POJ 2503 ELFhash WA的问题
2016-10-30
求解5050问题的解法为什么递归返回不去了
2016-08-25
关于java swing的一点问题
2016-07-11
关于c++文件读写的一个问题
2016-06-03
C++的成员函数友元的问题
2016-05-31
链表和指针的疑惑问题
2016-05-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人