- 博客(65)
- 收藏
- 关注
原创 常用算法模板“错误“总结
但是这里的x是可变的,所以需要从第一个枚举到最后一个x。在这里面取出最少的数量的那个组合。假如最后一个是x元,那么问题就变成找到一个。用最少的硬币数,拼成amount-x元。注意一定不要用add、search这些关键词做变量。最后一步就是找到一个硬币,正好拼成amount元。那么原问题就是用最少的硬币拼成amount-x元。DP首先要看,找到一个答案的最后一部是什么?接着想一下,把最后一部去掉,问题变成了什么?原问题 = 子问题+1。
2024-08-04 11:11:04 437 1
原创 图论-最小生成树
在 Prim 算法中,我们会从集合中逐步选出节点,因此一开始要设置所有节点的距离。是当前最小生成树(MST)中包含的节点集合之外的节点中,距离集合最近的节点。在算法开始时,所有的节点距离都是无穷大,因为还没有选择任何节点。根据节点1更新其他点到集合的最小距离,暂时将2、3、4更新为(1)(2)(3)。根据2号点更新其他不在集合的点的距离,此时没有借助2号点能变得更小的,因此不变。第一步:初始化,将所有点距离集合的距离设置为无穷,此时所有点都没有加入集合。相连的、尚未被包含在生成树中的节点的距离。
2024-08-03 14:53:37 1136
原创 图论之最短路径问题(朴素Dijksra算法\堆优化版Dijksra算法\Bellman-Ford\SPFA)
朴素Dijskra算法\堆优化版Dijskra算法\Bellman-Ford\SPFA
2024-08-01 12:28:37 1453
原创 树和图的存储-算法竞赛
树是一种特殊的图(联通无环图)。图又分为有向图和无向图。无向图可以用有向图表示,比如在无向图中a--b。在有向图中就是a->b;b->a;假如有如下图:如果要插入一个5->2,那么只要在h[5]后面插入一个2即可。这里的h[]是指有多个头节点。深度优先遍历:宽度优先:以上是模板。
2024-07-30 11:55:44 916
原创 哈希表和STL基础
哈希表作用是什么?是将一个数映射为另一个数,如果说离散化是将“有序”的数进行映射,那么哈希表就是更加广义上的映射。比如,现在有一个区间-1e9~1e9。但是真正用到的数只有1e5个。所以我们要进行映射。其中一个方法就是取模。比如x mod 1e5。但是这样会有一个问题,就是可能会有重复的映射值。比如,1~10 mod 5。那么5 mod 5 =0。这就有两个重复的数字了。那么如何解决?方法一:“拉链法”。例题一:I xQ x现在要进行 N 次操作,对于每个询问操作输出对应的结果。
2024-07-30 11:55:24 946
原创 对服装图像进行分类-基于tensorflow
作用:配置模型的学习过程。何时使用:在训练模型之前,设置优化器、损失函数和评估指标。model.fit作用:实际训练模型,更新模型的权重。何时使用:在模型配置好后,用于训练模型并优化权重。
2024-07-28 11:12:10 751
原创 堆的实现-适用于算法竞赛
首先讲一下能够实现的操作。什么是堆?堆其实是一棵完全二叉树。即处理叶子节点和倒数第一层节点,其他节点都有两个子节点,而且顺序是从上到下,从左到右。小根堆:每个节点都满足小于等于左右儿子节点。堆有down和up操作。何为down?何为up?操作例题:输入一个长度为 𝑛 的整数数列,从小到大输出前 𝑚 小的数。
2024-07-28 09:54:03 307
原创 算法(模板二)
仔细想一下遍历到第x个数,我们一定会去前面找第一个比arr[x]小的数,这样可以,但是我们要删除x前面比x大的数,这样会对后面产生影响吗?其实是不会的,因为x-1个数的位置是在第x之前的(如果占掉了,就说明第x-1个数一定大于第x个数)当遍历到第x+1个数时,要么第x+1个数比第x个大,要么比x个数小,与x-1个数没有什么关系。换个想法:要找x之前的数(第一个小于x的数),要删除比x大的数。因为单调栈是单调的,所以顺着栈顶一定可以找到第一个比当前这个数x小的数,而x之后的数,要找第一个比其小的数。
2024-07-27 10:50:08 507
原创 神经网络实现数字识别(机器学习)
首先我们需要将y设置为One-hot编码。下面是数据y。我们可以看出,第一行的是10,也对应着0。我们需要把第一行转化为[1,0,0,...0]。即原来5000*1的矩阵转化为5000*10的矩阵。array([[10][9][8]])我们需要将上面转化为每个样本中的单个特征只有1位处于状态1,其他都处于0。上面那个就代表数字1。1在哪个位置就代表哪个标签。
2024-07-27 10:49:46 487
原创 图像预处理(基础功能)
描述: 需要读取的图像文件的路径和文件名。类型: 字符串。flags: int (可选)描述: 图像的读取模式。这个参数决定了图像如何被读入:cv2.IMREAD_COLOR 或 1: 读取彩色图像(默认值)。图像将被读入为一个三通道的 BGR 图像。cv2.IMREAD_GRAYSCALE 或 0: 读取灰度图像。图像将被读入为一个单通道的灰度图像。cv2.IMREAD_UNCHANGED 或 -1: 读取图像及其 alpha 通道(如果存在)。
2024-07-23 09:00:47 616
原创 手写数字识别(机器学习)
这里先上的代码,想看原理可以到代码下面。在数据集中,y的取值为1~10,y=10表示当前数字为0首先读取数据,并对数据进行切分。...可以看到准确率为0.9445889177835567这里大家可能不知道minimize函数。minimize函数是 SciPy 库中的一个优化函数,主要用于求解最优化问题。它能够找到给定目标函数的最小值,并返回对应的变量值。理解minimize函数的工作原理对于优化模型和算法至关重要。下面,我会详细讲解minimize。
2024-07-21 07:57:57 1161
原创 Softmax多分类(机器学习)
假如我们有的y有4个可选结果(如优秀、良好、及格、不及格)。此时我们最后一层有10个神经元,那么输出向量也是10维的。上面的z是通过输入,计算出的在这4个维度上的“中间值”。经过这样处理,可以得到预测值为各数的概率。我们现在使用Softmax进行多分类。之前的逻辑回归只能进行二分类。
2024-07-20 11:34:07 560
原创 神经网络理论(机器学习)
逻辑回归是基于线性假设的分类模型,即认为特征与输出之间的关系是线性的。如果特征非常多或者特征与输出之间的关系是非线性的,逻辑回归可能无法很好地进行分类。如果特征之间高度相关,逻辑回归可能会受到多重共线性的影响,导致参数估计不稳定或难以解释。在复杂的分类问题中,数据可能需要非线性的决策边界来更好地进行分类。神经网络能够学习复杂的非线性关系,因此在特征与输出之间存在非线性关系或需要复杂的决策边界时,神经网络通常能提供更好的性能。
2024-07-20 10:44:05 1696
原创 特征映射(机器学习)
注意这里的j是从1开始的,我们原来的X多加了一列1(索引为0),这里从1开始的,没有计算哪个常数。我们这样看,至少需要达到2次以及以上的曲线才可以进行比较准确的分类。有时数据的分类并不像我们想象的那么简单,需要高次曲线才能分类。这里面的最后一项用来调节参数,防止出现过拟合和欠拟合。因为非线性的很容易进行过拟合,所以需要进行正则化。现在的问题是如何将已经有的两列转化为这么6列?我们先看一下最后得到的损失函数的形式。比如如果已知数据有3列(两列特征)那么什么是正则化呢?
2024-07-16 19:25:27 1110
原创 逻辑回归(机器学习)
上一题篇文章写了线性回归以及梯度下降法,这篇文章讲一下逻辑回归。在上一篇文章中,我们以住房各特征预测了房价中位数。这个是给定数据,预测一个连续的数据。还是举出上面的例子,只不过这次我不需要预测价格中位数了,只需要预测这个房子的“好与坏”,值域只有(好、坏)。要求:已知有数据(exam1,exam2,aeecpted),第一个和第二个是成绩,第三个是是否被大学录取,要求根据成绩来预测是否被大学录取。最后的theta是[[-23.77498778],[ 0.18690941],[ 0.18046614]]
2024-07-16 16:21:57 1326
原创 线性回归(梯度下降)
首先说案例:房子的价格和所占面积有着很大的关系,假如现在有一些关于房子面积和价格的数据,我要如何根据已经有的数据来判断未知的数据呢?假如x(房屋面积),y(房屋价格)
2024-07-13 20:04:28 880
原创 动态规划(DFS -> 记忆化搜索 ->动态规划)
首先看一个最经典的问题:上台阶问题。我们首先看一下,如何用DFS的方法进行解题。假设我们要上到第5级台阶:可以看出上到第五级台阶时,可能是由第4级上去的,也可能是从第3级上去的。接下来以此类推。所有我们很容易想到一个方程:假设F(x)表示上到第X级台阶的方案数。那么不难看出:一开始不要多想直接按照常规的DFS进行,但是这个过不了;再看上面的图,发现很多都算了2遍,比如3。
2024-07-11 13:07:53 1103
原创 广度优先(BFS)
可以看出BFS和DFS有着很大的区别,并不是“一条路,走到黑”。而是根据举例根节点的具体进行遍历。假如先确定顺序是从左到右,那么有什么办法可以从左到右进行遍历呢?那就别想了,直接上答案:队列。
2024-07-11 13:07:23 251
原创 归并排序以及逆序对个数
主函数中首先调用它。它是归并排序的主入口。参数arr[]是要排序的数组。start是开始位置,end是结束位置。要统计数组中的逆序对数量,可以在合并两个子数组的过程中,当发现左子数组的当前元素大于右子数组的当前元素时,增加逆序对的计数。一个测试用例占一行,第一个整数表示数组的长度,后面紧跟者数组中的各个整数元素,中间都用一个空格分开。仔细看已知两个有序数组,如何合并成一个大的数组呢?对于给定的数组A,计算其逆序对的总数。输出一个整数,表示逆序对的个数。每个数字A[i]的范围为。元素形成逆序对,因为。
2024-06-25 11:38:54 335
原创 项目管理与经济决策(项目计划)
类比法是以一个类似项目WBS模板为基础,制定本项目WBS 在很多专业应用领域中,均有标准或半标准项目WBS可作为新项目范围定义的模板使用。
2024-05-18 15:34:32 332
原创 关系查询和查询优化
关系数据库管理系统通过某种代价模型计算出各种查询执行策略 的执行代价,然后选取代价最小的执行方案执行开销主要包括磁盘存取块数(I/O代价)处理机时间(CPU代价)查询的内存开销分布式数据库总代价=I/O代价+CPU代价+内存代价+通信代价。
2024-05-18 15:33:52 1139
原创 项目管理与经济决策(项目投资经济决策)
流出系统的现金称为(CO)流入系统的现金称为(CI)构成现金流量的基本因素:投资、(付现)成本、 (现金)收入、税金、利润等(没有折旧。
2024-04-07 21:34:20 929
原创 操作系统(同步)
看下面的代码,定义一个整型变量counter,并初始化为0。每当向缓冲区增加一项时,递增counter;每当从缓冲区移走一项时,递减counter。在代码角度看,程序没有问题,但是我们的系统是分时操作系统,有时间片,比如执行到counter++,结果已经在寄存器上了,但是此时时间片到了,每来得及写入counter的内存,就执行counter--,这时就会出现错误。像这样,多个进程并发地访问同一个资源,并且执行结果与特定的顺序有关,称为所以仅需要引出即多个进程相互协调合作,使各进程需要按照一定的顺序执行。
2024-03-27 06:30:00 718
原创 数据库安全性
3.1非法使用数据库的情况用户编写一段合法的程序绕过DBMS及其授权机制,通过操作系统直接 存取、修改或备份数据库中的数据;直接或编写应用程序执行非授权操作;通过多次合法查询数据库从中推导出一些保密数据;破坏安全性的行为可能是无意的,故意的,恶意的。
2024-03-27 06:30:00 810
原创 操作系统笔记
操作系统作为用户和计算机硬件之间的接口,需要像上提供一些简单的服务。主要包括命令接口和程序接口,程序接口由一组。应用程序->trap(非特权指令,目态)->系统调用程序(管态)->系统调用处理程序->处理完成->目态。凡是与资源共享有关的操作,都需要通过系统调用的方式来像内核请求服务。应用程序可以通过系统调用来请求操作系统的内核服务。
2024-03-19 06:30:00 294
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人