笔记
文章平均质量分 50
计算机类郭琰璞
这个作者很懒,什么都没留下…
展开
-
2021-05-23
本周的学习主要是搜索 复习递归,总结一下递归形式1.找到递归关系,前一状态与后一状态的关系,直到已知状态。2.设置边界,找到初末递归状态。(知道什么时候停止)3.设计递归函数。(主要运用的是二分法的有关知识)。 做到二分查找的部分,发现其实这种类型的题目很有规律,题目大致的分为以下几类: 1.最基础的二分查找题目,在一个有序的数组当中查找某个数,如果找到,则返回这个数在数组中的下标,如果没有找到就返回-1或者是它将会被按顺序插入的位置。这种题目继续进阶一下就是在有序数组中查找元素的上下限。继续做可以求两个区原创 2021-05-23 16:05:23 · 58 阅读 · 0 评论 -
2021-05-16
背包问题总结 二分法总结 经过这个周的acm学习,我们又学到了新的知识及其学习解决问题的新方法,那就是背包思维,背包问题其实分为两种有单纯的背包问题或者是0—1背包问题,而这两种背包问题,虽然名字上来说都是背包问题,但是区别还有很多的,我们就先来谈一谈这二者之间的区别吧。循环变量不同、约束条件不同、最大总价值不同。 一、循环变量不同。1、背包问题:背包问题须先求出列坐标j较小的元素,故让循环变量j的值从小到大递增。2、0-1背包问题:0-1背包问题须先求出列坐标j较大的元素,故让循环变量j的值从大到小递原创 2021-05-16 17:00:51 · 56 阅读 · 0 评论 -
2021-04-25
ACM区间DP总结 经过老师耐心讲解和自己的总结,使我明白区间DP这么高级的东西,还是挺容易的。也就是在一段区间内的动态规划。 首先确定状态 初始化长度为1(or 2,3…具体因题而异)的dp数组的值 然后枚举区间长度,枚举区间的起始点,(有的题目还需要枚举断点) 由小区间转移到大区间。 最后dp[1][n]往往就是答案。 例题:石子归并,有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,并将新的一堆石子数记为该次合并的得分。主要思想就是一个一个原创 2021-04-25 21:15:59 · 65 阅读 · 0 评论 -
2021-04-17
线性dp总结 还是由最长公共子序列来就此展开,给定两个长度分别为n,m的字符串a,b,求既是a的子序列,又是b的子序列的字符串的长度最长是多少。首先为状态表示,就是说先对于两个序列来说,两者互相独立,互不干扰,要使用二维dp来存储信息。dp[i,j]表示a[1i]与b[1j]的最长公共子序列的长度,然后再进行阶段划分,已经处理的前缀长度(两个字符串中的位置,即一个二维坐标),通过长度来扩散至整个区间。最后写转移方程,转移方程:若a[i]==b[j]:dp[i,j]=dp[i-1][j-1]+1;原创 2021-04-17 18:07:17 · 48 阅读 · 0 评论 -
2021-04-10
每周总结 动态规划就是通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,简单基础dp主要是一些状态比较容易表示,转移方程比较好想,问题比较基本常见的。主要包括递推、最长递增序列,解决问题的一般步骤: (1)建立模型,确认状态 (2)找出状态转移方程 (3)找出初始条件 最长公共子序列,例如,小美有一个由n个元素组成的序列{a1,a2,a3,…,an},她想知道其 中有多少个子序列{ap1,ap2,…,apm}(1 ≤ m原创 2021-04-10 17:25:58 · 52 阅读 · 0 评论 -
2021-03-27
贪心算法学习总结 对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解。加工木棒,第一根加工的木棒耗费一分钟,接下来的每根木棒长度和重量大于或者等于第一根木棒则不费时间,否则需要花费一分钟。找到花费时间最少的最优解,首先将木棒长度按升序排列,若有相等情况则按木棒重量升序排列,安装前将数组赋初值为0,每安装一根初值变为1,若前一根木棍重量大于后一个根木棍,则时间加1。 #include<stdio.h> #include using namespac原创 2021-03-27 23:15:45 · 45 阅读 · 0 评论