- 博客(36)
- 收藏
- 关注
原创 8.27 矩阵乘法
矩阵,数学术语。在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。通俗的来说,由m∗nm*nm∗n个数组成的m∗nm*nm∗n大小的数表,称为一个矩阵。
2023-08-27 23:33:24 93
原创 8.25 单调栈与单调队列
当队列不为空且当队列队尾元素>=当前元素时,那么队尾元素就一定不是当前窗口的最小值,这时删去队尾元素,加入当前元素。单调队列,即单调递减或单调递增的队列。单调栈,指严格单调递增或单调递减的栈,跟单调队列差不多,但是只用到它的一端。当该元素可以入栈的时候,栈顶元素就是它左侧第一个比它小的元素。当队列不为空,且当前滑动窗口大小>设定的大小,就弹出元素维护。使用单调队列优化这道题,时间复杂度也在O(n)左右。如果栈空,就意味着左边没有比它小的数,输出-1。首先,如果不满足单调性,就将元素弹出栈。
2023-08-25 22:43:57 51
原创 8.25 指针
指针描述了数据在内存中的位置,标示了一个占据存储空间的实体,在这一段空间起始位置的相对距离值。在C/C++语言中,指针一般被认为是指针变量,指针变量的内容存储的是其指向的对象的首地址,指向的对象可以是变量(指针变量也是变量),数组,函数等占据存储空间的实体。*pt存储的是pt前一个的值——p的值,即a的地址。**pt存储的是pt前一个的前一个的值——a的值。二重指针是指向指针的指针,存储指针变量的地址。符号代表将指针指向上一个存储的值。pt存储的是pt的值,即p的地址;指向字符串常量的指针。
2023-08-25 22:25:48 43
原创 树形动态规划
某大学有n个职员,编号为1n。他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数ri,但是呢,如果某个职员的直接上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。所以,请你编程计算,邀请哪些职员可以使快乐指数最大,求最大的快乐指数。
2023-08-20 13:32:29 39
原创 区间动态规划
设有NN≤300堆石子排成一排,其编号为123⋯N。每堆石子有一定的质量mimi≤1000。现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻。合并时由于选择的顺序不同,合并的总代价也不相同。试找出一种合理的方法,使总的代价最小,并输出最小代价。
2023-08-20 13:21:26 41
原创 8.19 线性dp问题 题解
观察下面的数字金字塔。写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。在上面的样例中,从7→3→8→7→5的路径产生了最大权值。
2023-08-19 22:39:39 60
原创 8.14快速排序
快速排序,是c++自带的sort函数使用的排序方法。是一种不稳定的排序法。它的时间复杂度在On−Onlogn之间,平均时间复杂度为Onlogn。
2023-08-14 14:21:25 33
原创 8.13 最小生成树
如果要将2 5放入一个集合,即将指针为2 4的集合合并,只需要让2的指针指向5的指针就行了吗?初始集合设置为空,每次找到距离起点最近的点,将点收入点集,再继续查找距离这个边集最近的点。下面是并查集经典的find函数,在下面的kruskal代码我们也要用到。不存在,就加入集合。由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。简单来说,并查集,就是询问 合并集合与集合之间的一些操作。最开始时,列表中的每个点都在不同的集合,指针都指向自己。再将距离最短的结点的后继结点,设置为待查找。
2023-08-14 00:40:43 45
原创 8.12 最短路的基本算法
如果只查找k条边就能到达的结点数,对基础贝尔曼进行一些限制可以实现。SPFA算法主要用于判断负环。没有负环时不要用此代码,容易超时!优于Dijkstra算法的方面,是边的权值可以为负数。弗洛伊德算法,用于求任意两点之间的最短路。时间复杂度过高,高达O(nm)。
2023-08-12 23:44:41 51
原创 8.9 约数个数与约数之和
2的指数个数为2,3的指数个数为2,根据公式可得。每一个数的约数挑一个相乘得来,一共有。由约数和定理可知,360所有正约数的和为。先对12分解质因数,得到2 2 3,即。对于一个正整数N,他的约数个数。实际上,N的约数个数是由。举例:求360的约数和。将360分解质因数可得。例:求12的约数个数。
2023-08-09 22:56:58 36
原创 8.5 01背包 完全背包 多重背包ⅠⅡ(含优化)组合背包
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。组,每组中的物品相互冲突,现在,他想知道最大的利用价值是多少。如完全背包的部分,将代码使用动态一维数组优化,减少空间复杂度。,用空格隔开,分别表示物品数量和背包容积。,用空格隔开,分别表示物品种数和背包容积。,用空格隔开,分别表示物品种数和背包容积。,表示物品的重量,利用价值,所属组数。
2023-08-05 22:46:20 110 2
原创 8.3 二分法实现A-B数对
这道题用暴力循环也会TLE,考虑简便算法。遇到减法,先把数组sort一下,变成有序数组。就想到了对应的算法->二分查找。这种算法可以有效避免搜索重复,从而减小时间复杂度。
2023-08-04 01:07:59 58 1
原创 8.3 快速幂
求n的k次幂->首先想到双循环暴力->时间复杂度O(n2) 100%TLE减少不必要的循环次数->n9n2n3n4,而n3和n4都可以通过n2自乘得到。如果将n转换成,看一下数位,想的会更清晰。
2023-08-04 00:50:59 30 1
原创 8.2 记忆化搜索-数的划分
将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序)。n7k3,下面三种分法被认为是相同的。115;151;511问有多少种不同的分法。
2023-08-03 02:54:54 54
原创 [NOIP19981普及组] 幂次方
任何一个正整数都可以用2的幂次方表示。例如 $137=23+2^0 $。同时约定方次用括号来表示,即ab可表示为ab。由此可知,137可表示为27232072222021用2表示),并且3220。所以最后137可表示为222220))2220))20。又如1315210282521所以1315最后可表示为22220))222220)))22220))220。
2023-07-30 17:01:15 53 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人