- 博客(18)
- 收藏
- 关注
原创 第十六周学习总结
01背包问题基本题型:背包的体积为m,有n个物品它们有不同的价值v和不同的体积w,计算背包最多能装多少价值的物品。和贪心的区别:贪心求解背包问题用的性价比,性价比优的先装,剩下的物品可以拆分直到装满背包。动态规划01背包问题只有两种状态,1装0不装,物品不可拆分。由于只有装与不装两种状态,无需排序,但如果增加其他限制条件,也可能需要考虑排序问题。普通方法:memset(d,0,sizeof(d));for(i=1; i<=n; i++){ for(j=0; j<=
2022-06-19 23:41:03
87
1
原创 第十四周学习总结
上周学了贪心,本周学了动态规划算法,刚接触动态规划时,觉得它和贪心很像,都是寻找最优解。动态规划的主要思想是把问题分解成若干个子问题或者说子状态,综合每个子状态的最优解,进而求全局最优解。这里和贪心不同,贪心简单理解是一种状态寻找最优解的过程,而动态规划寻找全局最优,但不一定某个局部最优。动态规划一般需要使用递归或递推实现。我们在探究一个状态的最优解时,往往会将其记录下来,以便处理其他状态时可以简化处理,这里可通过状态转移方程实现,在此基础上通过递归寻找最优解。在处理动态规.........
2022-06-05 23:05:09
107
原创 第十三周学习总结
由于本周有两门考试,为了应对考试进行了大量的复习。对于贪心算法的学习压缩的大部分的空间,说实话地周一到周五也就是压根没看,也就是周末考完试之后看了一点。贪心算法就是按照最优策略,从局部寻找最优解,到达局部最优来实现整体最优。贪心题目一般需要先对数据进行排序,再根据问题对数据顺序处理。以下总结了本周看过的题型:最优装载问题,尽可能多的将物品装船,将轻者先装,需要升序排列,依次装船,记录剩余体积小则停止。背包问题,如果按价值从大到小,则可能因重量太大装的太少导致价值小,如果按重量由小到大,装的较多但
2022-05-29 23:59:51
320
原创 第12周学习总结
本周学习了最小生成树和最短路、贪心,并做了一些最短路的题目。虽然本次题目不多,但我还是没有能够全部A掉,只是A了一小部分。Dijkstra算法(解决单源最短路径)它所处理的图不能有负权。基本思路:对得到邻接矩阵,也就是不同位置的关系表示图,通过dijkstra我们能求出1到其他的点的最短路径,通过数组dis[ ]来记下初始化状态下1到其他点的距离,先从权值最小的点开始,搜索他周围能到达的所有的点的路径,将1经过这个点到达他们的总路径相加,与dis[ ]数组中的相对于的点进行比较,如果距离小与dis[
2022-05-23 01:46:06
94
原创 11周感想和总结
本周学习总结。上周通过看题解(上一周真看的不多)了解到了并查集和拓扑排序的基本使用方法。本周,进行了做题深入。并查集:在做一些题目中,大部分都是通过整数来进行连通的,有几个题用了字符串进行连通,对于处理字符串时,学到了可以用stl里面的映射map来解决,将字符串通过映射转为整数再来进行查、并操作。而且,并查集题目里面也有些用到了二分查找、最小生成树、贪心等想法。题目都是按照并查集的三大步骤走,先准备记录每个点的前驱节点,find函数,join函数进行,只是通过题目要求不同,导致产生不同的题型。并且,
2022-05-16 00:06:15
97
原创 java学习
面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们使用的就是面向对象了。面向过程和面向对象的区别面向过程优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。缺
2022-05-15 19:42:13
113
原创 本周学习总结
近两周学习了并查集和拓扑排序。课上老师讲了具体的实现思想,并且通过题目直观地感受了并查集和拓扑排序的应用。并查集:并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。并查集模板主要由一个整型数组pre[ ]和两个函数find( )、join( )构成。数组 pre[ ] 记录了每个点的前驱节点。for(int i=0;i<n;i++)//n表示输入的结点个数{pre[i]=i;//将每一个结点的前导点设为自己}函数 find(x) 用于查找指
2022-05-08 22:53:39
168
原创 java学习总结1
面向对象是Java语言的基础,是Java语言的重要特性。由C和C++演变而来的,它省略了C/C++中难以理解、容易混淆的特性,变得更加严谨、简洁、易使用。本周学习到了数组内容,对于java由C和C++演变而来,大部分内容和C++内容相同,在学习起来非常的省力。标识符:java语言的标识符以字母,下划线_,美元符号$开头。其余部分则是数字,下划线,$,数字的自由组合,标识符不可以是java关键字。常量:以final来定义常量,且该常量一旦被定义后便不可更改。基本数据类型:数值型
2022-05-08 12:43:51
505
原创 搜索专题练习感受
前几周看了搜索题目,看了思路以及题解。这周进行了练题,通过写代码对搜索有了更深入的理解并且比看题目更加深刻。经过几周学习下来,每天都能学到看到很多知识,虽然说有些知识理解不够,但我觉得对于养成每天坚持学习的习惯非常有帮助。昨天晚上才刚把作业交上,有时候做题昨天能够做出来,到了第二天可能在某个地方就会卡住,要及时巩固确保质量。看完作业九十多道题目后,无法确保每个题都能做出来,但是有了一定搜索的思路,也就是说是入门级别吧。九十多道题目,把相似的题型掌握几道,大部分此类题型基本上都能解决。现在,搜索的学习告一
2022-04-27 21:44:09
174
原创 第五周学习总结
本周由于各种原因,看题目看博客时间大大减少了,导致了本周看的内容偏少,周六周天也尽力在弥补本周欠下的学习内容。本周同样还是看的相关搜索的内容,话不多说,在此总结一下本周所看所学到的东西。1、二叉树与搜索P3884 [JLOI2009]二叉树问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)用到了树链刨分的想法。2、搜索与图连通块问题:一个矩阵选其中的一个元素,在它的周围进行判断,若它的周围连通,再进行对周围判断,直到不再连通。连通的这一片为一个连通块,通常题目判断
2022-04-17 22:58:58
742
原创 第四周学习总结
本周学习内容以搜素题目为中心进行,看了老师给的洛谷上的题目。在此总结一下题型和收获。一、DFS1、染色问题。在深搜中有一种这种问题,就是给你一个矩形阵列,这个矩阵可能由字符,整数等等组成。拿由整数来举例吧,让你去搜索一个在阵列中一个整数判断它周围的数是否符合题目要求。我认为可以把此类问题叫做染色问题,从开始进行搜索,每次搜索一个数将这个数进行染色(标记,可以让符合要求的标记为1,不符合要求的标记为0)。要注意边界的问题,我做的一个这种染色问题时,遇到第一个搜不下去的情况,可以再加一圈搜索从dfs(0
2022-04-10 23:03:32
212
原创 第三周学习总结
根据老师的要求,每天坚持看博客和题解,本周已经看了五十篇的博客。本周主要看了关于搜索与思维的博客与题解。总结:搜索BFS广度优先搜索,是一种分层查找的过程,首先访问起始顶点v,然后由v出发,依次访问v的各个未被访问过的邻接顶点w1,w2,w3….wn,然后再依次访问w1,w2,…,wi的所有未被访问过的邻接顶点,再从这些访问过的顶点出发,再访问它们所有未被访问过的邻接顶点….以此类推,直到途中所有的顶点都被访问过为止。一般应用于单源最短路径的搜索。搜索步骤:1、首先创建一个vis[]数组.
2022-04-03 22:03:46
1282
原创 周四晚比赛心得
本周周四晚上在cf上打了开学以来第二场比赛,两次比赛,让我更加认识到了与他人的差距,简直就是天上地下,没有可比性。主要反映了以下问题:对于读题和思路上面,对题目题意获取太慢。对于英文题目,读题速度太慢,看上2-3遍题目都不能理解题目要求,对关键信息把握能力欠缺。在解题时,仍需要返回题目进行研读,大大降低出题效率。思路迟钝。就拿第二题来说,题目要求不能连续吃相同的糖果,需要混着吃。结果我通过数据情况就来判断条件了,最终导致测试数据错误。除此之外,还存在一些细节问题。对题目细节把握不准,总是漏掉题目
2022-04-02 12:55:39
244
原创 第二周学习总结
近期学习了二分法和三分法的相关内容,总结如下:二分法和三分法二分法(1)对于一个序列,先确定待查数据所在的范围,然后逐步缩小范围进行搜素。常用在单调序列或单调函数中进行二分查找,因此当问题的答案具有单调性,就可以通过二分把求解答案的问题转换成二分查找答案并判定答案的正确性。注意:对于整数域上的二分,要注意终止边界和左右区间的取舍时的开闭情况,避免漏掉答案或造成死循环。对于实数域上的二分,要注意精度的问题。(2)步骤:1、先确定左右半段哪个是可行区间,以及中间位置。2、将待查找的数据与
2022-03-27 14:24:13
496
原创 第一周总结
本星期学习了类与对象以及STL关于vector map sort的相关知识。对于类与对象本周学习了析构函数、new和delete:析构函数,类名::~类名(){函数体}无返回值,无参数(从而无重载函数),而且调用顺序与构造函数相反。同时,学习了new和delete,例1,new 数据类型[单位数];其中单位数可为变量,可通过单位数来实现可变数组长度与vector类似。例2,new 数据类型;开辟一个相同数据类型的空间。对于new来说,其相当于一个函数,在内存开辟后返回空间的首地址,可用指
2022-03-20 00:51:38
241
原创 初学STL3
stackstack栈,是STL中实现后进后出的容器#include <stack>1、stack的定义:stack<typename> name;typename可为任意数据类型或容器2、stack中元素的访问:只能通过top()来访问栈顶元素3、stack常用函数:(1)push()push(x)将x入栈(2)top()top()获得栈顶元素(3)pop()pop()用以弹出栈顶元素(4)empty()empty()可以检测stack内是否为空,返
2022-03-12 21:55:07
160
原创 初学STL2
map映射map可以将任何基本类型映射到任何基本类型#include<map>map的定义map<typename1,typename2>mp;typename1,为键的类型,即映射前类型typename2,为值的类型,即映射后类型map容器元素的访问1、通过下标访问2、通过迭代器访问map会以键从小到大的顺序自动排序map<typename1,typename2>::iterator it;it->first是当前映射的键it-.
2022-01-29 15:12:51
886
原创 初学STL1
一:vector (长度可自动改变的数组)#include<vector>vector的定义一维定义 vector<typename> name;二维定义 vector<typename> Arrayname[arraySize];其中typename,可为任何基本类型,或STL标准容器。注意:其中二维定义时,与vector<vector<typename>> name相区分。vector<vect...
2022-01-23 19:28:22
254
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人