- 博客(12)
- 收藏
- 关注
原创 第十一次总结 二分三分法(二)
由于上一周并未讲到三分法,所以准备在这一节中再多些一些关于二分法的题。感觉多看一些题目,多练一下,会对理解有更多的帮助。 1.分别给定三组A、B、C的值和S值,问是否能找到Ai、Bj、Ck,使得Ai+Bj+Ck = S。 算法分析: 先相加成一个数组sab[500*500]。这样就相当于sab[i] + c[j] = s。 再变形一下, sab[i] = s - c[j]. 这样只要在sab数组中用二分查找是否存在s-c[j]就可以了。 #include <iostream> #include
2021-05-24 00:02:17 130
原创 第十次总结 二分三分法(一)
这一周我们学了二分三分法中的二分法。 二分法主要是指在一个单调有序的集合中查找元素,每次将集合分为左右两部分,判断解在哪个部分中并调整集合上下界,一直重复直到找到目标元素。这种方法优于直接顺序查找。 这里引入了一种写法(查找连续函数) Caculate():所要查找的函数,在这里单调递增 以及double类型的 low=“区间下界”,high=“区间上界”,mid; 使用方法如下: while(high - low > 1.0e-6) { mid = (high + low)/2; if(Cacula
2021-05-16 17:44:59 122
原创 第九次总结 背包(二)
这周经过老师的讲解,发现上周的理解有一些错误。首先背包问题分为三种: 1.01背包 2.完全背包 3.多重背包 其中的题目、代码基本没问题。此外,补充一点,01背包在循环中是逆序的,顺序从N到1,而完全背包是正序的,顺序从1到N.。 再看多重背包,多重背包有了二进制的优化。 题目: 有k种石头,高为hi,在不超过ai的高度下,这种石头可以放置,有ci种这个石头,求这些石头所能放置的最高高度… 思路:以往的什么硬币种数,最大硬币数之类的,他们的硬币都已经是排好序了的,总是从小到大,但是这个题目不同,它有着最
2021-05-10 00:19:13 84
原创 第八次总结 背包(一)
这一周主要是看了一下背包问题的知识点。在学习中知道除了简单的背包外还有完全背包,多重背包还有分组的背包问题,只可惜我还没有看完。就先简单的整理几个题目吧。 如有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。 基本思路: 特点:每种物品仅有一件,可以选择放或不放。 状态转移方程状态转移方程:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]} 其中f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最
2021-05-02 00:42:34 94
原创 第七次总结
区间DP 这一周学了区间DP,区间DP主要是把一个大区间拆分成几个小区间,先求小区间的最优值,然后合并起来求大区间的最优值。 大多数区间DP都可以用: memset(dp,0x3f,sizeof(dp)); for (int i=1;i<=n;i++) dp[i][i]=0; for (int len=2;len<=n;len++) { for (int i=1,j=len;j<=n;i++,j++) { //DP方程的实现 } } 下面
2021-04-26 00:14:56 76
原创 第六次总结
这一周我想写几个老师之前讲过的但是对于我来说理解起来有困难的题目,希望在之后如果多回来看看是否能够有不同的收获。 1.摆渡车 有n个人分别在t1∼tn 的时间到达,一辆摆渡车要把这些人送到另外一个地方,摆渡车来回一次要m的时间单位。求把这些人都送到的最短时间。 思路: f[i][j]表示第i个人等待时间为j的时候前i个人的最小等待时间.。 由题可知,若车停了m分钟,那么不如先送走一批人(即便当时没人),所以停车时间T1<m。设一个人等到车回来的时间为T2。因为车往返一次只需m分钟,所以T2<m。
2021-04-18 13:09:25 84
原创 第五周总结
动态规划 动态规划是对解最优化问题的一种途径,一种方法而不是一种特殊算法。 定义: 在多阶段决策问题中各个阶段采取的决策, 一般来说是与阶段有关的,决策依赖于当前状态,又随机引起状态的转移,一个决策序列就是在变化的状态中产生出来的,故有动态的含义,我们称这种解决多阶段决策优化的过程为动态的化程序设计方法。 组成: 1.阶段 2.状态(变量) 3.决策 4.(最优)策略 5.状态转移方程 能用动态规划求解的问题类型: 必须满足最优化原理和无后效性原则。——对于不能划分阶段的问题,不能用动态规划来解;对于能划分
2021-04-11 13:05:42 80
原创 第四周总结
动态规划(一) 动态规划是分阶段求最优值的算法。在计算过程中,可以将复杂问题按阶段划分成子问题;枚举出子问题各种可能情况,从中找出最优值;然后利用子问题的最优值求得源问题的最优解。使用动态规划必须具有最优子结构性质。 动态规划的几个概念: 阶段 状态 决策 状态转移方程 例题: 1.吃金币游戏 在一个长方形地图上,玩家每次能从一个方格走到相邻一个方格。 玩家控制的角色可以向下或者向右走,但不能向上或向左走。每个方格上都有一定的金币。现在,小明想请你帮他想一个策略,尽可能多的获得金币(从左上角走到右下角可能获
2021-04-10 15:26:57 85
原创 知识点+感想
第三周遇到的知识点总结 1.memset void *memset(void s, int c, unsigned long n); 函数的功能是:将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int 型。s 是 void 型的指针变量,所以它可以为任何类型的数据进行初始化。 2.输入输出 printf输出时不管是%lf 和 %f都是最多保留小数点6位。 scanf输入时%lf代表double型;%f代表float型。 %ld是输出长整型;%d是输出整型 3. co
2021-03-28 00:35:39 110
原创 贪心算法
第三周贪心算法题(一) A-A 题目:Farmer John has received a noise complaint from his neighbor, Farmer Bob, stating that his cows are making too much noise. FJ’s N cows (1 <= N <= 10,000) all graze at various locations on a long one-dimensional pasture. The cows
2021-03-27 23:25:29 115
原创 2021-03-20
总结二(1) 由于在前期学习中对类等知识点掌握的不足,我对这些知识点进行了复习。在这次复习中让我注意了许多之前没有了解的细节。(1)了解了宏与内联函数之间的联系与宏的限制。(2)清楚了C++中结构体和类是可以通用的,即结构体中也可以包含成员函数。结构体与类之间的区别在于:结构体中所有成员(包括数据成员和成员函数)缺省情况下都是public,而类中所有成员缺省情况下都是private。除此之外,两者可以通用。(3)了解到“面向对象程序设计”的好处如:考虑问题是站在人类思维的角度;程序的可扩展性要比其他不是面向
2021-03-20 23:35:51 75
原创 2021-03-13
##一、 STL总结 1、string(c++的字符串类型) (1)string表示的是可变长度的字符序列 (2)它可以进行初始化、复制、比较、连接,可进行字符串长度的查询,可以判断字符串是否为空,可以访问字符串中的单个字符。 (3)使用string类时,需要包含头文件 (4)操作: [] //索引 . upper() //字符串中字母大写 . lower() //字符串中字母小写 . capitalize() //字符串首字母大写 . strip() //去两边空格及去指定字符 . sp
2021-03-13 21:01:53 75
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人