自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 5月22日

最短路径1、Floyed算法2、Dijkstra算法3、Bellman-Ford算法:Ford(福特)算法,同样是用来计算从一个点到其他所有点的最短路径的算法,也是一种单源最短路径算法。能够处理存在负边权的情况,但无法处理存在负权回路的情况。4、SPFA算法:简单的说就是队列优化的bellman-ford,利用了每个点不会更新次数太多的特点。并查集动态地维护和处理集合元素之...

2019-06-11 19:04:16 207

原创 5月25日

并查集的作用:查询两点是否联通,即两点的关系。于是在用克鲁斯卡尔建造最小生成树时,可以用并查集判断是否需要加入此边,也可以查询u到v的路径中的最小边权。并查集可以通过压缩路径进而大大减少复杂度,从而A一题。并查集的实现操作步骤:建立一个新的集合,将包含x和y的动态集合合并为一个新的集合,返回一个指向包含x的集合的代表。判断元素是否属于同一集合:bool judge(int ...

2019-05-26 02:21:01 136

原创 5月18日

图论图的存储结构:1、二维数组邻接矩阵存储2、数组模拟邻接表存储 图的邻接表存储法,又称链式存储法。本来是要采用链表实现的,但大多数情况只要用数组模拟即可。void add_edge(int from,int to,int dis) //加入一条从from到to距离为dis的单向边{ edge[++num_edge].next=head[from]; edg...

2019-05-19 10:34:29 127

原创 5月15日

数据结构——堆堆结构是一种数组对象,它可以被视为一棵完全二叉树。树中每个结点与数组中存放该结点中值的那个元素相对应。堆分为大根堆和小根堆(大根堆即为父结点大于子结点,小根堆则相反)。对堆的操作主要有两个:put和get。put指加入元素,get则从堆中取出并删除一个元素。堆的应用:经典的Huffman树问题。Huffman树的构造方法如下:从森林里取两个权和最小的结点; ...

2019-05-15 23:57:14 139

原创 5月11日

二叉树性质:在二叉树的第i层上最多有2^(i-1)个结点(i>=1)。 深度为k的二叉树至多有2^k –1个结点(k>=1)。 【特别】一棵深度为k且有2k–1个结点的二叉树称为满二叉树。如下图A为深度为4的满二叉树,这种树的特点是每层上的结点数都是最大结点数。 对任意一棵二叉树,如果其叶结点数为n0,度为2的结点数为n2,则一定满足:n0=n2+1。 具有n个结点的完...

2019-05-12 01:04:57 108

原创 5月8日

数据结构1、栈栈顶近栈顶出。插入一般称为进栈(PUSH),删除则称为退栈(POP)。用一个栈指针TOP指向栈顶。若TOP=0,表示栈空,TOP=N时栈满。进栈时TOP加1。退栈时TOP减1。当TOP<0时为下溢。栈指针在运算中永远指向栈顶。2、队列队列是队尾进,对头出(先入队的元素先出)。3、树及二叉树二叉树的关键词:度、结点(结点有叶结点、分支节点,同时称上端结点为...

2019-05-08 23:53:21 93

原创 5月4日

单调队列单调队列中元素具有单调性,队首和队尾都可进行出队操作,而只有对位可以进行入队操作。若在单调队列中插入元素,若插入的元素破坏单调性,则删除队尾元素直到插入的元素不再破坏单调性为止。往往用于取最优值——访问首尾元素。小知识:使用freopen("1.txt","r",stdin); 该语句可直接导入样例数据,无需重复多次输入样例,大大的节省了时间,同时也提高了输入的准确率。...

2019-05-04 23:39:34 94

原创 5月1日

二分法的拓展——三分法不同于二分法中数据的单调性,三分法可用于求解某凸性或凹性函数的极值,由于通过函数本身表达式并不容易求解,故可以用三分法不断逼近求解。三分法类似二分的定义Left和Rightmid = (Left + Right) / 2midmid = (mid + Right) / 2;如果mid靠近极值点,则Right = midmid;否则(即midmid靠近极...

2019-05-02 19:54:42 112

原创 4月27日

搜索专题结束了……二分查找是二分算法中最简单基础的一类题目,在一个单调有序的集合中查找元素,每次将集合分为左右两部分,判断解在哪个部分中并调整集合上下界,重复直到找到目标元素。而二分法更多用于通过二分来找答案,先将答案具有的特定范围单调排序再进行二分验证。二分最大的特点即为省时,其消耗时间为,使用二分法能最大限度节省时间有效防止超时问题。...

2019-04-27 21:56:46 99

原创 4月24日

这段时间对搜索有了一定的了解,对深搜和广搜也有了一定的认识,知道了两者之间的区别以及何时使用哪种搜索方式。深搜可以说是“一条路走到黑”,它能列举出所有的可能,将所有情况全部枚举出来。而广搜则是耗时最短——最快速的搜索。根据不同的题目,采用不同的方法。今天在上数分课的时候讲到梯度,引出“盲人下山”(找到最快捷的下山方式),若将其编程,则就是广搜问题。同时,上节课还开了新的专题——二分,这里的...

2019-04-24 23:25:28 110

原创 4月20日

最近看到参加比赛的同学日夜兼程地写代码、打比赛,虽没有亲身经历,但也感觉出了其中的紧张与激烈。 有一个同学,报名参加了比赛,作为女生,佩服她的这份坚持,同时还不得不佩服她的做题能力——对题目的理解及题型的熟练度。继续看搜索问题,深度优先搜索可以通过递归及非递归来实现运用递归实现:Function Dfs (Int Step, 当前状态)Begin可加结束条件从当前状态循环拓展下...

2019-04-20 23:27:35 137

原创 4月17日

上个周末,由于参加英语竞赛错过了一堂课,已经开始了搜索的学习。搜索,其实就是穷举出问题的所有或部分情况从而求出问题解的一种方法。搜索相较于一般的枚举法有了一定的方向性和目的性。而这就用到了状态转移。目前,所常用的状态转移分为两种——广度优先搜索(BFS)和深度优先搜索(DFS)。广度优先搜索是按照层数一层一层来遍历的,根据队列先进先出的原理,将每一层的节点按从左到右的顺序依次放入队列中;而深度...

2019-04-17 23:45:06 92

原创 区间dp

主要思想就是先在小区间进行DP得到最优解,然后再利用小区间的最优解合并求大区间的最优解。

2019-04-14 02:22:13 83

原创 4月6日

这几天是清明假期,老师说对于写代码的人来说除了春节的那几天是没有假期的。这几天,在平时的做题网站上,每天都开了五小时的竞赛,我虽没有参加,但也从同学那里看了一些题目。全英文的题目,虽说平时做的题大多也都是英文,但平时也就用有道简单的就翻译出来了,然而真正做题的时候,电子词典什么的是绝对不可能的,so:English is very important!再就是,近期的背包问题。01背包是最基...

2019-04-06 23:27:02 85

原创 4月3日

近期主要学习DP中的背包问题,背包问题在一开始学习贪心的时候就有接触,现在是对其更加细化的学习,背包问题分为01背包、完全背包、多重背包、分组背包等问题,其复杂程度逐步增加。01背包问题是最基础的背包问题。其特点在于:每种物品仅有一件,可以选择放或不放。...

2019-04-04 23:28:07 108

原创 3月30日

今天计算机二级考试,虽说上学期学了C++,然而这次无比真切地感受到之前接触到的当真少之又少,就连现在学习的STL、贪心、dp也都是九牛一毛。很多知识都对其没有概念,很多方法到现在还没有掌握。动态规划问题,近期发现有很多题的思路是基本相似的。这里,不得不说一道题,就是最大矩阵和问题,在老师还没将思路的时候,唯一能想到的就是四个循环,循环套循环,耗时极大。然而,一个崭新的思路——压缩矩阵,这是之前...

2019-03-30 23:17:53 107

原创 3月27日——动态规划dp

这周开始讲动态规划。动态规划问题是在多阶段问题中求取最优解问题(每步最优以保证全局最优)。动态规划与贪心的最大区别在于贪心只能解决部分求最优解问题,而动态规划则能全部解决。但动态规划相较于贪心更加复杂,耗时更多。但可对动态规划进行优化,排除重复计算(以空间换取时间)——记忆化搜索,将已有结果存入数组,将再次用到此结果时直接调用数组数据而非重复计算。动态规划解决问题往往是自下而上的,而贪心往往相...

2019-03-27 22:30:04 102

原创 3月23日

近期的新知识点并不是很多,主要都是做题练习。贪心涉及到多变量的题目较多,故常用到数据结构以背包问题举例:struct bag{ int w; //物品的重量 int v; //物品的价值 double c; //性价比}a[1001]; //存放物品的数组排序因子(按性价比降序):bool cmp(bag a, bag b){ ...

2019-03-23 23:27:49 157

原创 memset函数

最快捷的结构体或数组清零——memset在这里举个例子:数组chr有100个存储位置:char chr[100];memset(chr,0,sizeof(chr));相当于将数组chr全部清零

2019-03-21 18:16:38 97

原创 3月20日总结

这周一直在做贪心的题,发现贪心的最大特点就是——读完题目后往往没有思路,无从下手;而当有思路后,代码并不会消耗太多时间。近期的题目,关联数据比较多,往往会用到pair类型或结构体。pair类型pair包含两个数据值。与容器一样,pair也是一种模板类型。但在创建pair对象时,必须提供两个类型名。pair与其他标准类型不同,可以直接访问其数据成员:其成员都是共有的,分别命名为fir...

2019-03-20 22:45:23 100

原创 贪心

贪心算法最主要的是思路,一般有了思路,解题过程就会简便。且通过例题来看,往往在主函数前使用solve函数,在solve函数中提现具体解题思路过程。贪心题需要通过具体题目要求,找出要“贪”的对象,进而思考“贪”的方法。...

2019-03-17 15:30:25 142

原创 贪心算法

//A是问题的输入集合即候选集合Greedy(A){  S={ };           //初始解集合为空集  while (not solution(S))  //集合S没有构成问题的一个解  {    x = select(A);     //在候选集合A中做贪心选择    if feasible(S, x)    //判断集合S中加入x后的解是否可行      S = S+{x};      A = A-{x};  }  return S;}

2019-03-12 23:03:14 154

原创 STL总结

1、栈(stack)栈只能操作最顶端元素。头文件: #include &lt;stack&gt;定义: stack&lt;data_type&gt; stack_name;操作: empty() -- 返回bool型,表示栈内是否为空 (s.empty() ) size() -- 返回栈内元素个数 (s.size() ) top(...

2019-03-09 23:29:13 117

原创 STL

1、栈(stack)栈只能操作最顶端元素。头文件: #include &lt;stack&gt;定义: stack&lt;data_type&gt; stack_name;操作: empty() -- 返回bool型,表示栈内是否为空 (s.empty() ) size() -- 返回栈内元素个数 (s.size() ) to...

2019-03-09 23:14:46 120

原创 ACM程序设计基础课开课

2019年2月25日晚上七点,再一次来到有关“程序设计”的课堂,这次,老师针对ACM/ICPC进行了全面且具体的介绍,让我们深刻了解开设这门课程的目的,而自己亦有修学这门课程的理由。目前,全国范围内含金量最高的计算机赛事便是ICPC和CCPC。现在的自己比不了从小就开始接触编程的别人,但只要肯付出,亦有可能收获一定的成绩。那么,便从现在做起,从开始的STL学起。...

2019-02-26 22:31:32 212

原创 2019年1月23日

今日写程序可以说是四处碰壁……一上午也没能写出一道题,直到现在,上午的问题仍没能想到解决方法。但所谓不在一棵树上吊死,在苦求无果后,放弃挣扎,改做其他题目。2062 两个有序数组的归并题目简述:输入一个整数n(n &lt;= 10000)和n个整数,保证这n个整数已按照从小到大进行排序。然后输入一个整数m(m &lt;= 10000),和m个整数,保证这m个整数已按照从小到大进行排序。...

2019-01-23 22:18:23 208

原创 2019年1月22日

连续几天做题,感觉把前面的简单题似乎都写完了……后面的题目难度逐渐增加,而且通过做题,明显感觉到自己仍有许多知识漏洞,很多没有掌握的内容。这个时候补充知识储备就显得尤为重要!从图书馆借来的C++的书此时可以充分发挥其作用。2059 斐波那契数简述题目:定义斐波那契数列的第1、2项是1,之后每一项等于前两项的和。(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 8...

2019-01-22 21:19:47 350

原创 2019年1月20日

经过这两天写程序,发现现在做的51nod上的题目和上学期间做的oj上的题目还是有很大的区别的。在我看来,oj上的题目更多的侧重与对思维的考察和知识点应用,用于检测每一阶段学习及掌握的具体情况,通常只要有了思路就很容易AC,如果有问题,大多只要经过微调,如考虑一下数组越界等,就可以将题目AC;而这两天做51nod上的题,题目都很基本,难度系数也都为“初学者”级别,但仍有好几道题不能保证1A,问题的关...

2019-01-20 13:03:08 174

原创 2019年1月19日

第一次在51Nod上做题。通过对一道题的不断修改,压缩时间,是一道题最终AC,来逐步完善自己的思维。1049 最大子段和简述题目:N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。...

2019-01-19 18:40:06 145

原创 《C++程序设计》课程设计报告

Problem 1  水仙花数简要题意:输出所有在m和n范围内的水仙花数。解题思路:现将定义域内(100&lt;=m&lt;=n&lt;=999)所有数存入数组中,如果为水仙花数,则该位置即为该水仙花数,否则赋值为0。输入给定范围区间,判断区间内数组的每个数值是否为0,若全部为0则输出no,否则输出对应不为0的水仙花数。细节处理:在主函数前定义数组,数组直接默认初始化,不需...

2019-01-09 11:23:27 429

原创 Problem 15 进制转换

简要题意:输入一个十进制数N,将它转换成R进制数输出。解题思路:每次用十进制数对R求模,结果用数组储存,然后每次除以R,直至等于0。细节处理:超过十进制后,会出现用字符表现数的情况,比较容易出错。 负数时输出负号。源代码: #include&lt;iostream&gt;#include&lt;cstring&gt;using namespace std;con...

2019-01-05 07:15:56 235

原创 Problem 14 回文串

简要题意:判断一串字符是否为“回文串”字符。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”。解题思路:定义字符数组,输入一串字符,判断字符第i和第n-i项是否相同。细节处理:strlen()函数定义在&lt;cstring&gt;中源代码: #include&lt;iostream&gt;#include&lt;cstring&gt;u...

2019-01-05 07:15:39 117

原创 Problem 13 判断整数存在

简要题意:判断是否存在有二个整数,加起来等于某个整数,乘起来等于另一个整数。解题思路:从1开始循环,判断输入的乘积m是否能被整除,若能被整除,将该数与其余数相加,判断是否等于输入的和数n,若满足则输出”Yes”,不满足则继续循环,循环结束后仍无满足的则输出”NO”。细节处理:乘积m为0时一定正确。 注意n、m可以为负数,故考虑到两种情况。 除数i只需循环绝对值的开方次。 ...

2019-01-05 07:15:18 197

原创 Problem 12 空心三角形

简要题意:输出字符型空心三角形。解题思路:定义字符,分类讨论当n=1时和n&gt;1时,n&gt;1时,每行空格加字符共2n-1个,且字符位置从第一行居中开始,每向下一行,就分别往左和往右移动一次,形如左上图。细节处理:当只输出1行时相当于输出所定义字符。 每两个空心三角形之间有一空行。源代码: #include&lt;iostream&gt;#include&lt...

2019-01-05 07:14:55 111

原创 Problem 11 求末二位

简要题意:一个整数,只知道前几位,不知道末二位,被另一个整数除尽,求该数的末二位。解题思路:将输入的位置末二位数乘100后从0开始依次加1,分别除以输入的除数,若能除尽,则将所加上的数存入数组,最后输出数组中的数。细节处理:从0开始加,不能忘记0。 输出时如果是个位数应在前面加一个0。源代码: #include&lt;iostream&gt;#define n 10...

2019-01-05 07:14:10 568

原创 Problem 10 车牌号

简要题意:对于每次给出的一个牌照区间号,推断出实际上给多少辆新车上牌照了(不能出现4或连续的62)。解题思路:将1~1000000区间内的所有含有4或连续的62的数的个数记录下来(累加),输入定义区间n,m,将总车牌号个数减去区间内存在含有4或连续的62的数的个数后输出。细节处理:与处理时含有4或连续的62的数的个数是累加的。 区间内车牌号总数是m-n+1。源代码: ...

2019-01-04 11:19:26 131

原创 Problem 9 求A1

简要题意:有如下方程:Ai = (Ai-1 + Ai+1)/2 - Ci (i = 1, 2, 3, .... n).若给出A0, An+1, 和 C1, C2, .....Cn.  求A1解题思路:通过n=1,n=2,n=3时求A1n=1时 2A1=A0+A2 2C1n=2时 3A1=2A0+A2 -4C1-2C2n=3时 4A1=3A0+A2 -6C1-4C2-2C3...

2019-01-04 11:18:08 128

原创 Problem 8 亲和数

简要题意:两个数的各自真约数之和等于另一个数,则这两个数为亲和数,输入两个数判断这两个数是否为亲和数。解题思路:分别求出两个数的真约数并求和,判断和是否等于另一个数。细节处理:由于真约数不包含数本身,故做整除循环时可从2开始除起,最后在和上加1即可。 每循环一次当能整除时,得到的是两个数,可将两个数都存入数组,这样只需循环至多数的开方次即可(减少循环次数,节约时间)。源代码...

2019-01-04 11:17:10 252

原创 Problem 7 偶数分组求和

简要题意:长度为n(n&lt;=100)的数列,该数列定义为从2开始的递增有序偶数,按顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。解题思路:先将n个数分成i组,每组有m个数,将每个组中的数相加求平均值,然后若分成i组后,有剩余数,将剩余的数相加求平均值。细节处理:注意规定输出格式,每个数之间用空格隔开。 数列需在while循环内初始化,之后是逐一递加的...

2019-01-04 11:15:53 275

原创 Problem 6 爬楼梯&小蜜蜂

简要题意:R:有一楼梯共M级,从第1级开始,若每次只能上1级或2级,要走上第M级,共有多少种走法。S:蜜蜂只能爬向右侧相邻蜂房。计算蜜蜂从蜂房a爬到b的可能路线数。蜂房结构如下。解题思路:经过找规律,两道题的解题思路完全相同,都用到斐波那契数列(从第三项开始,每一项都等于前两项之和)。首先计算出第一个和第二个数值,然后进行斐波那契数列的循环,将每个数赋值到数组中,然后输入 R:输入...

2019-01-04 11:14:35 81

空空如也

空空如也

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

TA关注的人

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