计算机理论基础
爱喝芬达
这个作者很懒,什么都没留下…
展开
-
图 学习总结
图的基本内容邻接表和邻接矩阵的实现方式将在具体算法实现中完成,不做赘述。邻接矩阵的遍历:邻接表的遍历:最小生成树:1.Prim算法2.Kruskal算法...原创 2019-12-01 22:34:24 · 207 阅读 · 0 评论 -
树 学习总结
1.引入的概念:结点:指树中的一个元素;结点的度:指结点拥有的子树的个数,二叉树的度不大于2;树的度:指树中的最大结点度数;叶子:度为0的结点,也称为终端结点;高度:叶子节点的高度为1,根节点高度最高;层:根在第一层,以此类推;2.树的存储结构:(1)双亲表示法:以双亲作为索引的关键词的一种存储方式每个结点只有一个双亲,所以选择顺序存储占主要以一组连续空间存储树的结点,同时在每个...原创 2019-12-01 22:00:53 · 233 阅读 · 0 评论 -
字符串和数组
KMP算法与KMP对应的是BF算法,也就是最朴素的逐一回溯比较法,非专业人士也能想到的一种算法,不做过多赘述。重点放在KMP算法上。KMP最核心的地方在于next数组的求法https://www.zhihu.com/question/21923021/answer/281346746这个回答很好的解释了next数组的求解方式,看完恍然大悟的感觉。多维数组其实并不存在多维数组,所谓的多维...原创 2019-11-24 10:26:17 · 99 阅读 · 0 评论 -
总结学习栈与队列
栈和队列都是特殊的线性表,对线性表的插入与删除操作位置进行了限定。栈是一种先进后出的数据结构,只能在栈顶进行插入与删除;队列是一种先进先出的数据结构,只能在队尾查入队头删除。与线性表一样,栈和队列都可以分别用顺序存储和链式存储的形式实现。1.栈的顺序存储结构实现设置空栈标志为栈顶指针top=-1,入栈top+1,出栈top-1。template class SeqStack{publ...原创 2019-11-06 20:27:21 · 354 阅读 · 0 评论 -
5.4 训练日志
五一假期,浪费在玩上了(눈_눈),最终还是没能抵御假期的诱惑,连高数作业都没得写。放松以后就难拾起原来的感觉了,这种状态持续好久了,一直想着给自己点学习的动力。 昨天在知乎上看到了一段很好的话,记录在册,激励自己。 https://www.zhihu.com/question/318937234/answer/645431576 周三的训练日志断了...原创 2019-05-04 22:07:44 · 287 阅读 · 0 评论 -
4.27训练日志
完美的运动会~( ̄▽ ̄~)~,可以安心看ACM的知识了。最近几天把之前写过的题目看了一遍,重新整理了一下思路,并没有进行太多新的内容。讲真的,搜索挺难,都说思路简单,但是编写程序单单有思路是不够的,这其中更多的是细节上的问题,每个问题都有每个问题不同的坑。 关于三分法的一些知识总结 三分法主要用于求解一个函数在某个区间内的极大(极小)值点首先对于一个凹函数y=f(x),我们...原创 2019-04-27 23:09:14 · 125 阅读 · 0 评论 -
4.17学习日志
昨天和今天开始做搜索的题目,进度略慢,昨天只做出一道题,今天也只做出一道,而且还都是似懂非懂的状态。发现一个问题,从区间dp开始,一直属于一种水过地皮湿的学习状态,当时会了,再回头一看,其实好多细节问题处理的不好,也就是没有理解透彻。 还是先说一下自己最近看的文章,关于DFS。 (1)算法原理 深度优先搜索即Depth Fir...原创 2019-04-17 22:46:11 · 176 阅读 · 0 评论 -
类与对象学习总结
首先,类与对象是一种新的编程思维,比起C语言面向过程的编程方式不同,类与对象关注的是对数据的操作,注重结果。 所谓类,就是包含成员函数的结构体,是一组具有相同属性和行为的对象的抽象。而对象就是具体化的类实例,对象有其具体的属性和行为。类的基本思想是数据抽象与封装。数据抽象是一种依赖接口和实现分离编程的技术。类的接口包括用户能执行的操作,类的实现则包括类的数据成员、负责接口实...原创 2019-04-14 22:47:45 · 158 阅读 · 0 评论 -
4.13训练日志
嘿嘿嘿,这三天终于按计划做题了~( ̄▽ ̄~)~,虽然需要借助CSDN上的题解和部分思路,自己最起码整理出了思路。感觉题目难度逐渐提升,不如今天看的题库中的C,题目本身很容易理解,就是在一串数中插入逗号使得分隔后的每个数符合严格递增,其中允许有前导零。然后题解没有看懂(눈_눈),就是理解不来的那种。所以果断放弃了这个题,转战其他。 明天又开新的专题了,又有一套新的题库在等着,只能努...原创 2019-04-13 23:15:28 · 86 阅读 · 0 评论 -
4.20 训练日志
最近几天没咋注重做题,自己读题大部分都有障碍,需要借助翻译。把课件上的代码自己亲手敲了一遍,发现其实有很多细节上的问题,不知道换别的题能不能处理好。 切入正题,这次主要总结一下广度优先搜索(BFS)。 1) 算法原理 广度优先搜索即Breadth First Search,也是图遍历算法的一种。用一句话概括就是:“我会分身我怕谁?!”。 ...原创 2019-04-20 23:04:21 · 422 阅读 · 0 评论 -
4.10阶段性学习总结
最近三天没有学新内容,区间dp的各种模型也掌握的差不多了,但是一遇到具体题目就思路混乱,找不着入手的地方。还有就是最近几天做题热情骤减,原因可能是从这周开始c++课程作业开始提交,精力被分走了不少,另外,电子技术基础和物理的难度陡增,平常还得挤时间看书理解,高数有不能丢下不管(눈_눈),时间安排不开。 就在刚才,费老头又把递归的课件发群里了,还没来得及看,不知道又是啥神仙算法...原创 2019-04-10 23:09:16 · 156 阅读 · 0 评论 -
区间dp自学总结
简单看了一下区间dp的课件,总结一下,思路大体上是懂了,就是做题略显吃力。 区间 DP是指在一段区间上进行的一系列动态规划。 对于区间 DP 这一类问题,我们需要计算区间[1,n] 的答案,通常用一个二维数组 dp 表示,其中 dp[x][y] 表示区间[x,y] 有些题目,dp[l][r] 由 dp[l][r−1] 与 dp[l+1][r] 推得;也有些题目,我们需要枚...原创 2019-04-06 22:43:07 · 134 阅读 · 0 评论 -
动态规划阶段性学习总结
这几天相当煎熬,动态规划实在是太难了,感觉最难的就是抽象递归,和贪心stl不同,dp代码的关键位置是看不懂的,看十几遍也整不动,以前最起码可以根据代码理清思路,现在只有将代码实现过程写到纸上手动跑才能勉强搞懂。 一个最长上升子段和问题,整整一天,在纸上写了一遍又一遍才把递归过程搞懂,现在说一下具体过程。 问题不再赘述,直接举例,给一个数列...原创 2019-03-27 22:19:59 · 181 阅读 · 0 评论 -
4.24 训练日志
总结一下刚学的二分思想。 二分思想可以理解为是一种将一个大问题分成两个子题,当每次分析完两个子问题后,舍弃其中一个不符合条件的子问题,再将符合条件的子问题一分为二,反复循环搜索判断的操作,直至找到所求的数值或者子问题不能再一分为二时为止的思想。 基本思想: (1)将n个元素分成个数大致相同相同的两半,然后取a[n/2]与x作比较。 (2)如果x = a[n/...原创 2019-04-24 23:35:02 · 106 阅读 · 0 评论 -
5.8 训练日志
总结一下数据结构的部分内容,简单的概念介绍,不做精细研究 各种数据结构的代码实现1 .栈#ifndef ARRAY_STACK_HXX#define ARRAY_STACK_HXX#include #include “ArrayStack.h”using namespace std;template class ArrayStack{public:Arr...转载 2019-05-08 23:38:20 · 110 阅读 · 0 评论 -
线性表学习总结(顺序表和链表)
线性表主要分为两种,顺序表和链表。顺序表主要利用的是数组,大部分时候只需要重新定义数组的插入或删除操作就可以,所以顺序表的存储结构跟数组是相同的,都是一串连在一起的内存。因此,顺序表在存储数据的同时也保存了数据之间的逻辑关系。并且可以通过访问数组下标直接访问对应元素。这里主要总结链表。链表是将内存中零散的不连续的部分连接在一起,这个起连接作用的东西就是指针。我们可以用过指针去访问已知的可以访问...原创 2019-09-29 17:02:37 · 817 阅读 · 0 评论 -
多态与继承 知识总结
在学习继承与多态之前,我们已经能够做一些类的构建和使用工作了,但是有时候会面临一个问题,两个或多个类之间有很多相同的地方,无论是数据成员还是成员函数。重复的代码使程序本身变得冗长,那么是不是可以采用一种方式将这些重复的代码删掉但同时又不改变原有代码功能的实现。于是继承应运而生。 所谓继承,就是在已有类的基础上修改或者添加新的特性得到的拥有已有类的特性和自己独有特定的类...原创 2019-06-23 16:00:09 · 153 阅读 · 0 评论 -
浅谈系统开发
构建系统的第N天,是时候总结一下自己的“经验”了,总得来说,构建系统需要以下条件:一定的c++基础,到底有多基础?大致知道类怎么用就可以。基本的逻辑思考能力,足够多的时间以及不轻易放弃的精神。有了这些就可以进行系统开发了,系统开发一般分三步:1.需求分析2.需求的代码实现3.调试运行第一步是整个系统开发的最关键之处,以图书馆系统为例,用户分为两类——读者和图书管理员,对于图书...原创 2019-06-22 14:45:52 · 1769 阅读 · 0 评论 -
5.22训练日志
总结一下图论的一些知识点1.邻接矩阵1.1 有向图的邻接矩阵具有n个顶点的有向图可以用一个n×n的方形矩阵表示。假设该矩阵的名称为M,则当<vi,vj>是该有向图中的一条弧时,M[i,j]=1;否则M[i,j]=0。第i个顶点的出度为矩阵中第i行中"1"的个数;入度为第i列中"1"的个数,并且有向图弧的条数等于矩阵中"1"的个数。1.2 无向图的邻接矩阵具有n个顶点的无向图也...转载 2019-05-22 23:13:11 · 89 阅读 · 0 评论 -
5.25 训练日志
今天的比赛没有参加,很是遗憾。今天总结一下并查集 并查集:(union-find sets)一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。最完美的应用当属:实现Kruskar算法求最小生成树。并查集的精髓(即它的三种操作,结合实现代码模板进行理解):1.Make_Set(x) 把每一...转载 2019-05-26 00:06:35 · 105 阅读 · 0 评论 -
5.11 训练日志
1:二叉树的基本性质一、二叉树第 i 层上最多有2i-1个节点二、深度为 k 的二叉树,最多有2k - 1个节点三、对于任意一颗二叉树T,如果其终端节点数为n1度数为2的节点数为n2 则 n1 = n2 + 1;四、具有n个节点的完全二叉树深度为[ log2n] + 12:递归建立二叉树递归常见二叉树,先从左子树开始,arr 是调用传值过去的节点值,i 用于移动数组内的节点值//创建...转载 2019-05-11 22:40:33 · 238 阅读 · 0 评论 -
5.15 训练日志
总结一下最近学的数据结构——堆。 堆数据结构是一种数组对象,它可以被视为一科完全二叉树结构。它的特点是父节点的值大于(小于)两个子节点的值(分别称为大顶堆和小顶堆)。它常用于管理算法执行过程中的信息,应用场景包括堆排序,优先队列等。 堆是一棵完全二叉树,高度为O(lg n),其基本操作至多与树的高度成正比。 get操作void Heapify(i...转载 2019-05-15 23:06:44 · 83 阅读 · 0 评论 -
动态规划阶段性学习总结续
关于最长大子段和问题,如果dp[i]是以a[i]为结尾的前i项的最大子段和,那么只需要考虑dp[i-1]的具体情况,如果大于0,则dp[i]=dp[i-1]+a[i],如果小于0,则最大子段和的起始位置更新,dp[i]=a[i];因为如果dp[i-1]小于0,子段和趋于减小,其与a[i]相加后的和比a[i]小。 这一直是困扰我的地方,想了好久,就是感觉不通透,每天都看很多关于...原创 2019-03-30 23:00:33 · 107 阅读 · 0 评论 -
自学动态规划续
1.使用动态规划的一些技巧使用动态规划时,要么考虑拿走整件商品,要么考虑不拿,而没法判断该不该拿走商品的一部分。但使用贪婪算法可轻松地处理这种情况!首先,尽可能多地拿价值最高的商品;如果拿光了,再尽可能多地拿价值次高的商品,以此类推。动态规划可帮助我们在给定约束条件下找到最优解。在背包问题中,我们必须在背包容量给定的情况下,偷到价值最高的商品。在问题可分解为彼此独立且离散的子问题时,就可使用...原创 2019-03-23 21:01:41 · 116 阅读 · 0 评论 -
背包问题学习总结
怎么说呢,刚刚写了一大堆,但是没有保存,现在很难受(눈_눈)(눈_눈),下次再也不能用记事本写东西了!天杀的一加! 好,现在切入正题,背包问题最基本的就是0-1背包。题目描述:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。 利用二维数组f[i][v]来表示放第i件物品在容量为v的背包中的价值。...原创 2019-04-03 23:21:35 · 287 阅读 · 0 评论 -
2019.2.1 自主训练日志
训练第十二天,先说一下今天解决的问题。题目描述:幼儿园里面的小朋友在玩橡皮泥,每一个小朋友都有一块橡皮泥。每一块橡皮泥都是一个长方体块。从橡皮泥的大小可以看出哪一个小朋友是老大,哪一个小朋友是小弟。拥有橡皮泥体积最大的小朋友总喜欢欺负拥有橡皮泥体积最小的小朋友。现在给出n个小朋友的橡皮泥,请输出谁欺负了谁。输入单组测试数据。第一行有一个整数n(2<=n<=9)。 接...原创 2019-02-01 22:34:25 · 301 阅读 · 0 评论 -
2019.1.27 自主训练日志
训练第七天,前两天休息,想着让自己缓解一下,放松一下。今天恢复训练。简单说一下今天的成果。 首先今天把课本前十章看完了,巩固了一下指针、函数部分的知识,越发感觉指针的强大和函数的简洁。指针的强大在于它可以将我们带入计算机本身,对存储空间直接进行操作,所以透过指针我们对数据的操作的影响是根本性的,也因为这点,在使用指针时要特别注意,指针要有方向,切不可乱指一气,对程序造成毁灭...原创 2019-01-27 23:02:33 · 224 阅读 · 0 评论 -
2019.1.31 自主训练日志
训练第十一天,今天收获颇丰,先来说一下51nod上AC的题目,好事成双、字典序。代码就不展示了,算法简单,属中下难度的题目,相较与那些一眼看上去就会的题目有许多细节上的要求,好事成双的解题思路就是输入数组,然后依次遍历,比较数量关系,计数。但是输入数组长度并不确定,题目中说的是以输入0为结束标志,可在输入样例中并没有0,所以这困扰了我很久,最后试着提交了一遍,才发现输入样例是错的 (...原创 2019-01-31 23:43:18 · 171 阅读 · 0 评论 -
2019.1.21 自主训练日志
训练第三天,今天碍于各种原因,没有按照自己的计划进行训练(눈_눈)难受~抽空看了几道题,但是没有AC,心痛,头疼。先说一下今天遇到的问题,关于判断数据是否溢出。起初不知道从何下手,后来借鉴CSDN上的文章,发现了一个规律:加法溢出判断:若c=a+b; c-a!=b则溢出;或者a, b>0, c<0溢出;或者a, b<0, c>0溢出;减法溢出判断:若c=a-b; c+b!...原创 2019-01-21 22:14:03 · 224 阅读 · 0 评论 -
2019.1.20 自主训练日志
训练第二天,首先总结一下昨天没有解决的问题。#includeusing namespace std;int main(){int l,r,n,m=0,flag=0,x;cin>>l>>r; if(l>r) swap(l,r); for(n=l;n<=r;n++) {x=n; while(x!=0) {m=x%10;x=x/10; ...原创 2019-01-20 22:01:00 · 186 阅读 · 0 评论 -
2019.1.24 自主训练日志
训练第六天,头疼,今天一事无成,错误没有解决,困惑的地方也没能疏通,往下看了几道题,结果又出现了新的难题,失败的一天,不再多做解释。 明天继续寻找解决方案,遇到的困难总有解决的方法,可能是我知识不够,也可能是算法不够完善思路混乱…… 学习编程的路还很长,这只是冰山一角的困难,坚持!...原创 2019-01-24 22:52:36 · 135 阅读 · 0 评论 -
2019.1.19 自主训练日志
今天第一次进行自主训练,第一天就遇到了麻烦,废话少说,直接上题目。如果一个数字的十进制表示中有7,我们就认为他是幸运数字。 输入两个整数L, R(1 <= L <= R <= 100000)输出所有满足L <= n <= R的幸运数字n。从小到大输出所有幸运数字,一行一个。特别注意如果区间内有任何一个幸运数字,输出None。输入样例88 111输出样例9710...原创 2019-01-19 22:04:31 · 309 阅读 · 0 评论 -
2019.1.23 自主训练日志
训练第五天,首先说一下关于昨天的越界题目,最终代码实现如下#includeusing namespace std;int main(){int a,b,flag=0;long long c;cin>>a>>b;c=a+b;if(c>=-2147483648&&c<=2147483647)flag=0;if((c-a...原创 2019-01-23 22:43:50 · 184 阅读 · 0 评论 -
C语言程序设计课程总结
转眼间,C语言学习已过去了一学期。通过这一学期的学习,已经可以解决一些简单的实际问题了,但是距离真正的编程还是有很大距离的。C语言精髓之处也只是简单了解了一下,指针和数组的强大还没有真切体会到。 以下是对一学期学习成果的总结一. C语言的基本语句#includeusing namespace std;int main (){ return 0;}这串代码会出现在...原创 2019-01-04 22:19:57 · 4143 阅读 · 1 评论 -
C语言程序设计课程小结——数组
数组用于保存大量同类型的相关数据,简单的将就是数据容器。一·数组的特点:1.数组内的所有元素的数据类型是相同的;2.数组是存放数据的容器,需要语句引用其中的元素;3.数组的长度是一定的,这在定义时就已经确定,且不可更改。二.数组的定义和初始化数据类型 数组名 [整数1][整数2]…[整数n]在[ ]中的脚标代表数组中元素的数量,有几个[ ]就是几维数组。特别注意的是,下标是...原创 2018-12-23 18:29:46 · 887 阅读 · 0 评论 -
2019.1.22 自主训练日志
训练第四天,今天解决了不少之前遗留下来的问题。关于昨天数组前缀和的题超时的问题得到了解决,写成函数也不能缩时,先上代码,仔细分析。#includeusing namespace std;int a[100001],b[100001];int main(){int n,sum;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];...原创 2019-01-22 23:46:29 · 169 阅读 · 0 评论 -
2019.2.2 自主训练日志
训练第十三天,今天没有AC一个题目Ծ‸Ծ,先说一下这个做了一天的题目,Noder咖啡馆里面有N个座位,每天会有若干个顾客来店里面消费,会得到相应的服务。一个顾客占一个位置,顾客离开之后位置就会空出来。如果顾客来了之后没有位置,那么顾客就会直接离开,也就得不到服务。现在已知座位数N,以及一天之内顾客来走的顺序,请统计一下有多少顾客没有得到服务。输入单组测试数据。第一行有一个整...原创 2019-02-02 22:27:42 · 165 阅读 · 0 评论 -
2019.1.28 自主训练日志
训练第八天,今天没有选择继续看课本,刷了更多的题。简单的题目做了几道,用来攒点头盾,也做了几道难度适中的题目,难题没有碰。 先说一个相对简单的题目:请你帮小瓜将正整数n分解质因数,并从小到大输出所有的质因数(如果一个质因数出现多次,则输出多次)。输入一行一个正整数n,保证1<=n<=10^8。输出若干行,每行表示n的一个质因数。按从小到大的顺序输出质...原创 2019-01-28 22:58:13 · 209 阅读 · 0 评论 -
c++学习总结(前四周)
1.c++新增内容a.constexpr类型如果认定某个对象是常量表达式,可以把它声明为constexpr类型由编译器验证对象的值是否是常量表达式,通过这种方法可以获得编译时常量声明为constexpr的数据对象一定是一个常量,必须用常量表达式初始化constexpr与const在大多数情况下使用方式相同。b.auto类型说明符编译器自动检测数据类型,在声明变量但又不是很清楚具体数据类型时使用...原创 2019-03-24 21:49:12 · 82 阅读 · 0 评论 -
自学动态规划
1.动态规划的定义 动态规划,dynamic Programming,是一种高效解决问题的方法,使用与具有重复子问题和最优子结构的问题。2.动态规划的核心简单解释 一句话:Those who cannot remember the past are condemnde to repeat it. 一段对话:A * "1+1+1+1+1+1+1+1 =?"...原创 2019-03-20 22:49:58 · 154 阅读 · 0 评论