![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
wniuniu_
https://niuniu0101.github.io/
展开
-
区间dp练习
【代码】区间dp练习。原创 2024-06-19 18:33:14 · 252 阅读 · 0 评论 -
矩阵中严格递增的单元格数
【代码】矩阵中严格递增的单元格数。原创 2024-06-19 11:42:20 · 154 阅读 · 0 评论 -
字典树练习
【代码】字典树练习。原创 2024-06-18 21:42:14 · 165 阅读 · 0 评论 -
dp练习2
如何分析这个题目呢,要想着当前的最优解只和前面的最优解有关。原创 2024-06-17 21:48:06 · 281 阅读 · 0 评论 -
dp练习题
可是如果我们数组里面的数字很大怎么办,我们不能把我们的数组也开的特别大。这个题目咋一看还没有什么思路,但是我们可以转化为打家劫舍。我们只需要考虑前面的就行,后面的就交给后面的元素考虑。先来一个简单dp练习。原创 2024-06-16 22:28:21 · 242 阅读 · 0 评论 -
树状数组练习
先看一下最后一题,这是一个树状数组的题目,那就水一下吧,但是由于没有注意问题,wa了很多次。原创 2024-06-16 20:46:27 · 292 阅读 · 0 评论 -
查找区间不同种类的个数--树状数组+贪心
【代码】查找区间不同种类的个数--树状数组+贪心。原创 2024-06-16 20:26:18 · 94 阅读 · 0 评论 -
leecode 881 贪心+双指针
做这一题的时候我用了贪心,但是没有用双指针,所以超时了。为什么可以用双指针呢,这个问题交给你了。原创 2024-06-10 23:25:53 · 191 阅读 · 0 评论 -
查找区间不同种类的个数--树状数组+贪心
【代码】查找区间不同种类的个数--树状数组+贪心。原创 2024-06-10 22:18:22 · 347 阅读 · 0 评论 -
逆序队专题
逆序对的定义是,在一个数组中,对于下标 ( i ) 和 ( j )(其中 ( i < j )),如果 ( a[i] > a[j] ),则称 ((a[i], a[j])) 为数组的一个逆序对。换句话说,逆序对就是在数组中前面的元素大于后面的元素的情况。例如,对于数组 ([3, 1, 2]),其中的逆序对有 ((3, 1)) 和 ((3, 2)),所以该数组有 2 个逆序对。我们首先需要离散化数据,然后先处理值大的数据,值相同的位置大的先处理。如何利用树状数组求逆序对。原创 2024-06-10 20:07:03 · 189 阅读 · 0 评论 -
并查集进阶版
【代码】并查集进阶版。原创 2024-06-08 22:18:07 · 436 阅读 · 0 评论 -
最大公约数的遍历
【代码】最大公约数的遍历。原创 2024-06-07 23:53:42 · 117 阅读 · 0 评论 -
树状数组专题
树状数组相较于线段树好写,但是局限于查询区间和,没啥功能。原创 2024-05-22 00:04:47 · 349 阅读 · 0 评论 -
动态规划专题
【代码】动态规划专题。原创 2024-05-21 14:56:42 · 340 阅读 · 0 评论 -
前缀疑惑和专题
【代码】前缀疑惑和专题。原创 2024-05-20 19:08:17 · 148 阅读 · 0 评论 -
数论专题练习
我的思路就是一个素数筛,然后双指针。原创 2024-05-15 19:48:55 · 187 阅读 · 0 评论 -
图论专题训练
【代码】图论专题训练。原创 2024-05-12 23:02:48 · 256 阅读 · 0 评论 -
记忆化搜索专题
如果要记忆化搜索的话,如果数据是10的九次方,我们不可能开一个那么大的数组来存储,所以我们要学会用map来存储。原创 2024-05-12 22:27:47 · 181 阅读 · 0 评论 -
二分专题练习
【代码】二分专题练习。原创 2024-05-10 08:48:33 · 183 阅读 · 0 评论 -
线段树专题
【代码】线段树专题。原创 2024-05-09 08:30:44 · 328 阅读 · 0 评论 -
leecode每日一练
我一开始的思路也是dp,但是转移方程想错了,这个题目转移方程应该是dp[i] = max(dp[i-2]+nums[i],dp[i-1])原创 2024-05-05 07:49:39 · 336 阅读 · 1 评论 -
单链表式并查集
我们直接从第m次开始,用fa[x]记录下一个空闲的位置,每一个馒头只刷一次颜色。如果用暴力算法的话,那么会直接超时,我们要学会用并查集去记录下一个空闲的位置。这个题目没什么思路,很多次的修改操作,还有可能会有重叠。原创 2024-05-04 23:16:47 · 258 阅读 · 0 评论 -
并查集训练
NOIP2010 提高组 T3。原创 2024-05-02 21:01:29 · 549 阅读 · 0 评论 -
三数之和细节
这道题看着简单,但是有细节要注意,不能有重复的三元组,我们也不能一开始的时候把重复的元素去除,如果全都是0的话,那么就删除的只剩下一个0了,显然答案是[0,0,0]unique()函数将相邻且重复的元素放到vector的尾部 然后返回指向第一个重复元素的迭代器再用erase函数擦除从这个元素到最后元素的所有的元素。所以可以先进行排序,这样重复元素就会堆一起了,调用unique()函数,再调用erase函数删除重复。我们在这里再学习一个如何取出vector中重复的元素。原创 2024-05-02 19:16:39 · 12 阅读 · 0 评论 -
树的中心 树形dp
【代码】树的中心 树形dp。原创 2024-05-01 08:01:51 · 134 阅读 · 0 评论 -
数位dp练习
windy 定义了一种 windy 数。原创 2024-04-30 15:55:44 · 750 阅读 · 0 评论 -
数位dp 数字游戏
原创 2024-04-29 23:14:03 · 60 阅读 · 0 评论 -
线段树学习
【代码】线段树学习。原创 2024-04-28 08:45:34 · 91 阅读 · 0 评论 -
算法学习之单调栈
发射站题目描述某地有 NNN 个能量发射站排成一行,每个发射站 iii 都有不相同的高度 HiH_iHi,并能向两边(两端的发射站只能向一边)同时发射能量值为 ViV_iVi 的能量,发出的能量只被两边最近的且比它高的发射站接收。显然,每个发射站发来的能量有可能被 000 或 111 或 222 个其他发射站所接受。请计算出接收最多能量的发射站接收的能量是多少。输入格式第 111 行一个整数 NNN。第 222 到 N+1N+1N+1 行,第 i+1i+1i+1 行有两个整数 HiH_iHi原创 2024-04-27 20:19:12 · 614 阅读 · 0 评论 -
倍增法学习
这里i为开始下标,j是2的次幂。原创 2024-04-13 18:41:20 · 174 阅读 · 0 评论 -
poj.org部分题目(五)
【代码】poj.org部分题目(五)原创 2024-01-08 10:41:33 · 374 阅读 · 0 评论 -
poj部分题目答案(四)
【代码】poj部分题目答案(四)原创 2023-12-12 20:48:35 · 70 阅读 · 0 评论 -
DP状态压缩学习
当然以此类推还会有以1为终点和以2为终点的情况,此时我们可以进行以上操作不断更新到5这个点的最短距离,最终可以得到走到5这个点儿的最短距离,然后再返回最初的假设,再依次假设1,2,3,4是终点,最后再不断更新,最终可以得出我们想要的答案。此时我们可以果断的做出决定:走第六种方案!second: 0–>1–>3–>2–>4 距离:23。second: 0–>1–>4–>2–>3 距离:22。first: 0–>1–>2–>3–>4 距离:21。fifth: 0–>3–>1–>2–>4 距离:15。原创 2023-12-06 23:19:08 · 246 阅读 · 0 评论 -
差分约束系统
原创 2023-12-06 22:39:03 · 104 阅读 · 0 评论 -
poj部分题目(三)
【代码】poj部分题目(三)原创 2023-12-05 20:12:16 · 399 阅读 · 0 评论 -
动态规划 之 钢条切割
上面解决中重复对一个子结构问题重复求解了,我们可以把这个过程记录下来。原创 2023-11-24 23:22:02 · 105 阅读 · 0 评论 -
Bellman-Ford算法
Bellman-Ford算法是一种用于寻找带有负权边的图中的单源最短路径的算法。它可以处理一般的图,包括存在负权边和负权环的情况。以下是Bellman-Ford算法的基本思想和步骤:初始化:将源节点的距离设置为0,将所有其他节点的距离设置为无穷大(或一个很大的数)。进行松弛操作:对图中的每条边进行一轮松弛操作。松弛操作是指通过检查是否存在一条更短路径来更新节点的距离值。重复进行步骤2:重复进行|V|-1次松弛操作,其中|V|是图中节点的数量。这是为了确保所有可能的最短路径都被考虑到。原创 2023-11-22 19:28:26 · 112 阅读 · 0 评论 -
poj.org 部分题目答案
【代码】poj.org 部分题目答案。原创 2023-11-16 16:52:34 · 73 阅读 · 0 评论 -
最长公共子序列
(Longest Common Subsequence,LCS)是动态规划中的经典问题。顾名思义,即求两个序列最长的公共子序列(可以不连续)。让我们来探讨一下这个问题。然而,直接这样写会引起时间和空间复杂度的爆炸。,如果使用滚动数组,可以将空间复杂度优化到。的方法,并且传参时传索引而不是序列本身。的方法,将时间复杂度和空间复杂度优化到。这一算法的时间复杂度和空间复杂度均为。去掉最后一个元素后的子序列。我们要如何求它们的LCS呢?在本文中,我们规定用。此外,我们还可以使用。原创 2023-11-09 22:51:36 · 112 阅读 · 0 评论 -
最大连续子数组
然后,递归地求解左子数组和右子数组的最大子数组和,以及跨越中间的最大子数组和。这个方法的时间复杂度是O(n*log(n)),其中n是数组的长度。: 暴力解法是最简单的方法,它通过两层嵌套循环遍历所有可能的子数组,计算它们的和,并找到和最大的子数组。最大连续子数组(Maximum Subarray)问题是一个经典的算法问题,其目标是在给定的整数数组中找到一个连续的子数组,使得该子数组的元素之和最大。上面的代码演示了几种不同的方法来找到数组中的最大子数组和(最大子序列和问题),并进行了简要的分析。原创 2023-11-08 19:31:52 · 683 阅读 · 0 评论