自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 收藏
  • 关注

原创 创新工厂面试题目

题目:给定一个函数rand5(),该函数可以随机生成1-5的整数,且生成概率一样。现要求使用该函数构造函数rand7(),使函数rand7()可以随机等概率的生成1-7的整数。思路:很多人的第一反应是利用rand5() + rand()%3来实现rand7()函数,这个方法确实可以产生1-7之间的随机数,但是仔细想想可以发现数字生成的概率是不相等的。rand()%3 产生0的概率是1/5,而产生...

2013-09-17 20:24:41 223

原创 虚函数、纯虚函数、虚基类、抽象类、虚函数继承、虚继承

虚函数:虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。是C++中多态性的一个重要体现,利用基类指针访问派生类中的成员            函数,这种情况下使用虚函数,这种情况下采用的是动态绑定技术。          虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public,在基类的类定义中定义虚函数的一...

2013-08-29 14:34:12 162

原创 STL学习之stack

栈(statck)这种数据结构在计算机中是相当出名的。栈中的数据是先进后出的(First In Last Out, FILO)。栈只有一个出口,允许新增元素(只能在栈顶上增加)、移出元素(只能移出栈顶元素)、取得栈顶元素等操作。在STL中,栈是以别的容器作为底部结构,再将接口改变,使之符合栈的特性就可以了。因此实现非常的方便。下面就给出栈的函数列表和VS2008中栈的源代码,在STL中栈一共就...

2013-08-27 15:20:37 170

原创 STL 学习之deque

deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面列出deque的常用成员函数: deque的实现比较复杂,内部会维护一个map(注意!不是STL中的map容器)即一小块连续的空间,该空间中每个元素都是指针,指向另一段(较大的)区域,这个区域称为缓冲区,缓冲区用来保存deque中的数据。因此deque在随机访问和...

2013-08-27 10:33:53 199

原创 大众点评

 稀里糊涂的就投了一个大众点评网,没过多久就收到了笔试通知,居然是在线测试,感觉这种方式很新颖。2013.4.24当天就在线做了题目,比较坑爹的发现,我们三个人做的题目是一样的,自己居然是第一个做的,前面的逻辑题与数学推理题还算是比较简单的,有一点毛病就是自己太不淡定了,碰到不会做的东西就比较着急,找借口,这也是自己性格中的毛病之一吧。大概过了一个礼拜之后,就接到了大众点评的面试电话,...

2013-05-25 19:19:03 253

原创 腾讯笔试面试总结

2012年4月,腾讯发来通知,让去参加笔试,由于腾讯一直是自己喜欢的单位,就很认真的在准备腾讯的笔试。由于是第一次参见笔试,没有什么经验,看往年试卷有很多网络与操作系统的知识,自己就无从复习,无奈之下就看完了面试宝典还有往年的试题。4.12号去参加笔试,发现卷子的那一瞬间发现几乎都是往年的原题,自己当时那个悔啊,自己总有这个毛病,眼高手低,很多东西都以为自己会了,其实自己没有完全理解,就这样...

2013-05-25 18:54:46 334

原创 排序算法总结

选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 冒泡排序是稳定的,算法时间复杂度是O(n ^2)。   2.2 选择排序(Selection Sort)  选择排序的基本思想是对待排序的记录序列进行n-1遍的处理,第i遍处理是将L[i..n]中最小者与L[i]交换位置。这样,经过i遍处理之后,前i个记录的...

2013-05-17 11:00:28 78

原创 poj 3122

题意:作者要开一个生日party,他现在拥有n块高度都为1的圆柱形奶酪,已知每块奶酪的底面半径为r不等,作者邀请了f个朋友参加了他的party,他要把这些奶酪平均分给所有的朋友和他自己(f+1人),每个人分得奶酪的体积必须相等(这个值是确定的),形状就没有要求。现在要你求出所有人都能够得到的最大块奶酪的体积是多少? 思路:贪心的思想+二分。复杂度为O(nlogM),M为初始时的high...

2012-12-11 19:51:25 140

原创 poj 3273

题意:给你天数n,和每天需要花的钱,让你把这些天分成m份(每份都是连续的天),要求每份的和尽量少,输出这个和。    一开始二分的上界为n天花费的总和(相当于分成1份),下界为每天花费的最大值(相当于分成n份),然后二分,每次的mid值为(上界 + 下界)/ 2,然后根据mid值遍历n天花费,对n天的花费进行累加,每当超过mid值 份数++,看看这个mid值能把n天分成几份,如果份数大于m,表示m...

2012-12-11 16:49:56 109

原创 算法复习贪心算法poj2393

题意:一个工厂每周要提供不同数量单位的酸奶酪,每周生产单位酸奶酪的成本是不同的,你可以选择预先生产然后库存给以后的周,但是有额外的成本,告知一共要提供 N 周酸奶酪,库存每单位酸奶酪每周的代价是 S,告知每周的单位生产成本 C 和 每周需求 Y,问最小代价是多少。 思路:直接贪心代码如下: #include <stdio.h>int c[10001], y[10...

2012-08-09 16:52:24 152

原创 算法复习之贪心算法poj2709

题意:一套涂料有3~12种颜色,每种颜色50ml。Emily上课需要n种颜色的涂料,第i种颜色需要color[i]ml,此外,Emily还需要gray ml的灰色涂料,每ml灰色的涂料需要3种不同颜色的其他涂料各1ml融合而成。问emily要上课,至少需要买几套涂料? 思路:贪心。由于n很小,所以每次1ml的其他涂料融合成灰色时,再对他们进行排序。 代码如下: #include&l...

2012-08-09 16:14:46 121

原创 算法复习之贪心算法poj 065

题意:有n条木棒,给出它们每条的l和w,用一台机器对它们进行加工,如果机器正加工的木条,与在它之前加工的木块有关系:l <= l'和w <= w',则机器不用准备时间,否则需准备1分钟。问加工完全部木棒,机器最少需要准备多久。 思路:贪心。对length进行上升序列的排序,特别应注意两length相等时,应按weight的上升序列的排序。排序号之后,就是找出weight的最小上升序列数...

2012-08-09 15:07:09 120

原创 算法复习之贪心算法之poj 1323

题意:一次card比赛,有m个参赛者(包括你),每个参赛者有n张卡片。每张卡片的编号都不一样。每一轮,所有参赛者都打出一张卡片,编号最大的赢。问你至少能赢几局。 思路:简单贪心 代码如下:#include<iostream>using namespace std;const int mMax = 22;const int nMax = 52;struct...

2012-08-07 16:27:56 198

原创 算法复习之贪心算法poj2586

题意:对于MS Inc来说,每个月如果盈利则必盈利sur,如果亏空则必亏空def(这个公司很怪)。它每五个月进行一次统计,共统计八次(1-5月一次,2-6月一次...)。统计的结果是这八次都亏空。判断MS Inc全年否能盈利,如果能则求出最大的盈利。如果不能则输出"Deficit"。 思路:贪心,符合最优子结构性质。5个月统计一次都亏空,那么有5种情况:      1、若SSSSD亏空,那么全年可...

2012-08-07 15:40:45 119

原创 算法复习之贪心算法 poj 1328

题意:地图的x轴的上方为海,下方为陆地,海中有n个小岛,坐标为(isl[i].x,isl[i].y)。有一种雷达,能探测到的范围为以d为半径的圆。问海岸线上至少造多少雷达可以把所有的小岛都包含在内。注意雷达是建在海岸线上的,也就是x轴上的。 思路:贪心,从左到右建立雷达,要尽量多地覆盖岛屿。以岛屿为圆心,以d为半径画圆,如果画出的圆与x轴没有交点,则不能实现。存在交点的话,计算出第i个岛屿...

2012-08-07 15:14:47 331

原创 下一步学习计划

  搞了这么久,看了自己以前制定的工作计划,大体上算是完成了,在数据结构方面又做了进一步的研究,但是距自己对自己的要求还有一大段距离,特别是算法方面,还有待加强。为此,下一步的学习计划如下:a:复习以前自己所写的知识,总结总结,抽象出概念。b: 学习算法的东西,不只是数据结构课本上的算法,这种东西都要强化训练,包括DP,贪心,背包问题,搜索等等,都需要自己强化训练。c:关于应用层的东西...

2012-08-04 16:33:34 1432

原创 poj 2492

题意:Professor Hopper专门研究bug的生活习性,他表示若两只bugs的生活习性差别很大,则说明他们可能为不同的性别,但如果出现三只bugs的习性两两差别很大,则有可能出现同性恋的bug了。现在有n只bugs,和生活习性差别很大的m对bugs的编号,问这些bugs中,有没有可能出现同性恋者。题目中给出的数对比如(1 2 ,2 3 ,1 3)是表示交配关系的,而且交配的都默认为理解为异...

2012-08-04 16:23:56 111

原创 poj 1080

题意:给两串DNA序列,按照给定的方法找他们最大的相似度。比如序列AGTGATG和GTTAG,化为AGTGATG和-GTTA-G,相似度最大,为14。思路:由低到高的往上递推,动态规划。 设dp(i,j)为第一个序列(s1)的前i个数和第二个序列(s2)的前j个数的相似度的最大值。当s1[i-1]==s2[j-1]时,由题目给出的表显然可以得出dp(i,j)=dp...

2012-08-03 16:12:55 102

原创 poj 1990

题意:FJ有n头牛,排列成一条直线(不会在同一个点),给出每头牛在直线上的坐标x。另外,每头牛还有一个自己的声调v,如果两头牛(i和j)之间想要沟通的话,它们必须用同个音调max(v[i],v[j]),沟通起来消耗的能量为:max(v[i],v[j]) * 它们之间的距离。问要使所有的牛之间都能沟通(两两之间),总共需要消耗多少能量。 思路:树状数组。很好的一道题。把牛按x升序排列,然后:(很难表...

2012-08-01 16:26:50 99

原创 poj 2155

题意:一个n*n的01矩阵,和几种动态操作,包括对子矩阵(x,y,xx,yy)的所有元素异或,查询某一点(x,y)的元素值。 思路:二维树状数组。异或操作不难修改,重点这道题目与普通的树状数组不同的是:普通的树状数组一般是修改点,查询区域;而这里是修改区域,查询点。所以要对普通的add()函数和sum()函数进行对调修改,这里要对两个函数的性质了解清楚,可以先从一维的树状数组理解入手,再按二维的模...

2012-08-01 15:18:27 118

原创 poj 1195

题意:这道题目只是题意自己就去理解了半天,大概题意如下:给出i一个n*n的矩阵,初始化为均为0,还有关于这个矩阵的几种操作,操作如下:命令1:(X Y A)对位于坐标(X Y)的值加A;命令2:(L B R T)求出位于L<=x<=R,B<=y<=T的值的和;命令3:退出不做任何操作。 思路分析如下:二维树状数组,典型的动态操作题目。查询子矩阵(x,y,xx,yy)...

2012-07-30 10:09:30 63

原创 poj 1256

题意:字符的全排列(顺序:'A'<'a'<'B'<'b'<...<'Z'<'z')。思路:STL中next_permutation的运用,多写一个比较函数。源代码如下:#include<iostream>#include<algorithm>using namespace std;const int MAX =...

2012-07-30 08:59:51 168

原创 poj 1731

题意:输出一个字符串从小到大的全排列,而且不能输出重复的排列。。。 思路:传说中勤劳的小孩应该用递归....我承认我很懒,还是用STL吧!有一个神奇的函数叫做next_permutation(a,a+n)返回值为bool型,用来判断还有没有排列。记住先是字典序,才能用它产生去全排列。 代码如下: #include<iostream>#include<a...

2012-07-29 21:03:53 282

原创 poj 3067

题意:日本岛东海岸与西海岸分别有N和M个城市,现在修高速公路连接东西海岸的城市,求交点个数。做法:记每条告诉公路为(x,y), 即东岸的第x个城市与西岸的第y个城市修一条路。当两条路有交点时,满足(x1-x2)*(y1-y2)  < 0。所以,将每条路按x从小到达排序,若x相同,按y从小到大排序。  然后按排序后的公路用树状数组在线更新,求y的逆序数之  和    即为交点个数。...

2012-07-29 15:46:45 105

原创 poj 2481

题意:FJ有n头牛(编号为1~n),每一头牛都有一个测验值[S, E],如果对于牛i和牛j来说,它们的测验值满足下面的条件则证明牛i比牛j强壮:Si <= Sj and Ej <= Ei and Ei - Si > Ej - Sj。现在已知每一头牛的测验值,要求输出每头牛有几头牛比其强壮。 思路:树状数组。需要对牛i比牛j强壮的条件进行理解。把牛群按照测验值E的降序排...

2012-07-29 14:51:04 146

原创 poj 2352

树状数组第01讲 什么是树状数组?树状数组用来求区间元素和,求一次区间元素和的时间效率为O(logn)。有些同学会觉得很奇怪。用一个数组S[i]保存序列A[]的前i个元素和,那么求区间i,j的元素和不就为S[j]-S[i-1],那么时间效率为O(1),岂不是更快?但是,如果题目的A[]会改变呢?例如:我们来定义下列问题:我们有n个盒子。可能的操作为:1.向盒子k添加石块2....

2012-07-28 16:50:58 103

原创 poj 2528

题意:有n(1~10000)个市长的候选人,这个城市专门为他们安排了一个长为10000000的墙,他们每人可以按顺序帖自己的竞选海报到墙上,所有的海报与墙一样高,分别帖在墙的[a[i],b[i]]区间上。问最后能露出来被看到的海报有多少张。 思路:线段树+离散化。由于长度太大,无法直接建树,而n最大只有10000,故因考虑离散化。      例:区间[1,6], [1,7], [2,1...

2012-07-09 08:34:43 129

原创 poj 1823

题意:一个hotel,有n间连续的房间,现在有m组操作:      type 1: '1, a, b': 第a个房间起的b个房间有旅客入住。      type 2: '2, a, b': 第a个房间起的b个房间的旅客离开。      type 3: '3': 问最长的连续空房间有多少间。 思路:线段树。这道题很好的利用线段树递归的性质,加深了对线段树递归的理解。复习了一下延迟的操作,...

2012-07-09 08:33:58 168

原创 poj 3368

题意:一个具有n(1~100000)个点的序列,从大到小排序,有一些点的大小是相等的,问区间[a,b]上,相等大小的点最多是几个。 思路:线段树+离散化。离散的运用:将连续的相等的一个区间的点集,聚集为线段树的一个节点,并且在这个节点上有信息能体现出这个区间的性质。 代码如下:#include<iostream>using namespace std;con...

2012-07-06 14:43:35 89

原创 poj 2777

题意:长度为n(1~100000)个单位的画板,有t(1~30,位运算的可能性)种颜料。现在叫你完成m组操作:      1. "C A B C" Color the board from segment A to segment B with color C.      2. "P A B" Output the number of different colors painted betw...

2012-07-06 14:42:08 85

原创 poj 2182

题意:FJ有n头牛,编号为1~n,它们并没有按照编号的顺序排好队列。现在,FJ只知道每一个牛前面有多少只牛的编号比它大。问你能不能判断出所有牛的编号。 思路:线段树。关键:每次最后一只牛的编号是可以确定的,即为pre[i]+1,将其编号从所有牛中删除,则倒数第二只牛的编号又可以确定为pei[i]+1,依此类推。代码如下:#include<iostream>usi...

2012-07-06 14:40:01 70

原创 poj 3468

题意:给出[1,n]区间内每个点的数值,让你执行下面的操作:      1. C a b w : 区间[a,b]上所有点的数值加上w。      2. Q a b : 输出区间[a,b]上所有点的数值之和。思路:经典线段树。静态建树,成段修改,区间求和。用普通的线段树去做肯定超时,因为成段修改的时候会是o(n)。关键在于用add记录对应区间内所有元素的增量,并对查询函数进行相应的修改。...

2012-07-06 14:34:46 87

原创 poj 3264

题意:Farmer John有n头牛按照编号顺序排好,第i头牛高度为hei[i],现在给出区间[a,b],问这个区间内的最高的牛和最低的牛相差多高。 思路:基础线段树。 静态建树,求区间最大值与最小值之差。跑得要点慢。代码如下: #include<iostream>using namespace std;const int Max = 50005;...

2012-07-06 14:34:15 96

原创 hdoj 1166

 题意:略。思路:基础的线段树,静态建树,更新结点,查询信息。代码如下:#include<iostream>using namespace std;const int Max = 50005;struct data{ int l, r, num;}node[3*Max]; // 线段树节点的数据结构。int num[Max];...

2012-07-05 16:22:39 115

原创 线段树简介

     线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。  对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。   使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时...

2012-07-05 16:18:41 104

原创 poj 2185

题意:给你一个字符矩阵,求出它的最小覆盖子矩阵,即使得这个子矩阵的无限复制扩张之后的矩阵,能包含原来的矩阵。 即二维的最小覆盖子串。思路:KMP很好的一道题。首先易证:最小覆盖子矩阵一定靠左上角。那么,我们考虑求出每一行的最小重复串长度,所有行的最小重复串的长度的lcm就是最小重复子矩阵的宽。然后我们对列也做相同的操作。于是我们就可以求得最小重复子矩阵的大小了。(这里要注意一点:当所得...

2012-07-05 15:10:34 68

原创 poj 3450

题意:给你n个的串,求出它们的最长公共子串,如果不存在这个子串,则输出“IDENTITY LOST”,如果存在多个最长公共子串,则输出字典序最小的那一个。思路:枚举+KMP。与poj3080类似,详情见poj3080#include<iostream>#include<cstring>using namespace std;const in...

2012-07-05 11:03:51 87

原创 poj 3080

题意:给你n个长度都为60的串,求出它们的最长公共子串,如果这个子串的长度 < 3则输出“no significant commonalities”,如果存在多个最长公共子串,则输出字典序最小的那一个。思路:枚举+KMP。枚举第一个串的所有后缀串(而不是枚举第一个串的所有子串),每一个后缀串做一次KMP,求出这些串的与其余所有串的最长匹配。#include<ios...

2012-07-05 10:48:05 89

原创 poj 3461

题意:给你一个字串(模式串)和一个母串(文本),问字串在母串中出现的次数。 思路:最基础的KMP算法。在匹配完成一个之后,应该j=next[j],不能j=0,保证模式串在文本的所有种出现情况都包含到,这里注意下就可以了。代码如下:// #include<iostream>#include <iostream>using namespace std;...

2012-06-27 19:48:24 79

原创 poj 2752

题意:给你一个串,如果这个串存在一个长度为n的前缀串,和长度为n的后缀串,并且这两个串相等,则输出他们的长度n。求出所有的长度n。 思路:KMP中的get_next()。对前缀函数next[]又有了进一步的理解,str[1]~~str[next[len]]中的内容一定能与str[1+len-next[len]]~~str[len]匹配(图1)。然后呢我们循环地利用next,由于next的性质,...

2012-06-27 16:00:09 151

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除