自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 trie树 数组模拟

​ trie树 是一种利用树形结构 存储字符串的方式 ,树的第n层代表前缀长度大于等于n的所有字符串的前缀。​ 我们举个例子 下图就是一个trie树 他存储了 两个字符串 abc 和bc 我们可以看到 层数为2代表了 前缀大于等于2的所有字符串的前缀​ trie树的作用是什么?既然可以存储前缀数组 ,他就可以高效的算出所有以某个字符串为前缀的字符串集合 在以后的AC自动机会用到,当然也可以求最大异或对。贴一下代码 y总的板子举个例子就明白了 比如son213。

2023-09-14 10:15:30 196 1

原创 最短路问题简单汇总

所以 在所经过的路上有负环的最短路是无法求解的 因为负环的话一定是越走越小的 只要一直在负环里面转圈。​ 再有 就是 为什么循环n次一定能获得答案(如果有的话),因为如果第n次还有更新的话(一般不会更新) 那么就代表 1-n之间有n条边,这不可能,所以说 如果n次都找不到答案 ,那么就代表了 从1-n有负环 存在 有的环路越走越小了,不断的在被更新。​ dijkstra算法是单源最短路,也就是说以某个点为起点,我们求解这个点到其他点的最短路。​ SPFA算法的时间复杂度一般是。

2023-09-11 20:12:52 201

原创 背包问题 总结

​ 公式如下 :其中k代表当前体积为j的情况下最多可以装几个物品 w[i]代表第i个物品的重量 v[i]代表第i个物品的价值。​ 这样我们只需要在我们的0-1背包 的一维优化代码当中 把j的遍历顺序 从大到小改为从小到大 即可 就没有这么多事情了。可以表示 0-7之内的所有的数字 这时候,又加入了一个3 我们只需要 在原有的5,6,7的基础上 加上这个3即可。这个内部的内容应该是 i-1件物品时候的状态 但是如果我们正着遍历 那么他对应的就会是 第i件的状态就会出错。

2023-09-10 11:35:45 193 1

原创 区间异或的计算

​ 1.对于区间异或 我们可以 仿照 前缀和的思路 对于前缀和 我们假设 原始数组为aN那么前缀和 数组的公式可以写成pretipreti−1preti​ 而对于比如 求解 区间 [l,r]的和 我们可以由以下的公式求解anspretj−preti−1;​ 对于异或运算 我们可以类比 一下前缀和的加法运算 用一个前缀和数组 来记录整个的 异或 和​ 但是 异或和 有一个问题 就是我们还原的时候应该怎么还原。

2023-09-08 23:11:40 1221 1

原创 洛谷 P1126 搬运重物

那么 (x+1,y+1) (x+1,y),(x,y+1),(x,y)都是不能走的 这个我们可以这么想 每一个方格的右下角做坐标对应的是我们走的点 比如方格是第八行第三列 那么左上角的坐标对应的是(7,2) 右下角对应 (8,3) 也就是方格的坐标 那么我们对于给定的坐标的话 我们就假设他是 方格的右下角 看看这个方格是不是黑色的具体可以看图。那么 (2,3),(2,4),(3,3),(3,4)都是不能走的 那么我们给定以一个坐标。然后就是关于 障碍物 障碍物给的是方格的颜色 比如方格坐标是。

2023-09-07 17:53:02 362 1

原创 快速幂和应用快速幂求逆元

​ 对于快速幂问题 之前的解决方法是逐步合并 ,比如45我们可以先变成162∗4,然后再变成256∗4,但是这样有一个缺点就是代码很容易写错,然后学习到了一种新的求解快速幂的方法。​ 首先为什么要引进快速幂,如果我们要求4n,那么我们暴力的做法就是写个for循环 但是 这样的时间复杂度是On的 时间复杂度太高了 ,因此,我们要引进快速幂。

2023-09-07 11:05:27 156 1

原创 欧拉函数欧拉筛

欧拉函数和欧拉筛 的个人理解

2023-09-06 17:24:16 99 1

原创 筛质数 (包含线性筛的理解证明)

​ 但是,即使是最为朴素的方法,优化也是很好想象的,比如,12是个合数(不是质数就是合数,也就是12前面有质因子),2和6是两个质因子,3和4是两个质因子,我们发现,质因子是成双成对出现的,两个质因子肯定是单调不减的,也就是说,我们没有必要搜到n-1,只需要搜到。​ 但是,我们可以看出来一个问题,比如,我们在2筛选过的数,在4又被筛选了一遍,而这显然不是我们想要的,所以,我们可以优化,就是每次只筛选质数,也就把第二个for循环放到第一个if里面,这样可以把复杂度优化到。​ 首先我们要明确什么是是质数。

2023-09-06 09:38:31 205 1

原创 质因数和约数

​ 对于这段代码的使用 有两种情况 一种是 我们的 x本身就是质数 遍历完 之后没有找到质因数 还有一种就是我们不断减少 我们的x过程中最大的那一个p的系数是1 也就是相当于 最大的那个p就是一个单独的质数 那么这时候和第一种情况相同。​ 需要注意的是 在我们的代码当中 传进去的形式参数 x是不断减少的 因为我们分解质因数的过程其实就是 去找上面那个公式(1)当中 的p和。取0到上界 的不同值的排列组合 这样我们就可以的到所有的 约束的个数 也就是下一个题目。注意undermap的使用。

2023-09-05 17:13:56 452 1

原创 洛谷P9583

那要怎么计算 已经涂上颜色那,我们可以采用以下公式 其中 count(line)的意思是 已经涂上颜色的有多少行。count(col)是已经涂上颜色的有多少列 ,这个公式我们可以这么理解 就是先把所有的颜色都涂上 然后再减去二者重合的,​ 我们也可以优化一下 ,我们可以看到 对于我们最后的结果没有贡献的有两种 一种是 压根就没有涂上颜色 另外一种就是涂上颜色超过k次了。​ 按照这个题目的数据 开二维数组肯定不现实的,那么我们就用两个一维数组line和col分别记录 我们行涂上的颜色和列涂上的颜色 ,

2023-08-30 15:06:21 179

原创 一维差分加上二位差分

​ 然后这个题目就简单了,第一问,我们可以这么想,我们对一个区间进行+1或者-1操作其实就是执行了insert操作,这个操作有加就有减,所以对于某个区间c[l]到c[r+1]如果c[l]和c[r+1]是异号的,从全局来看,那么一定是他们两个抵消(也就是负数+1,正数减1)的时候要用到的次数最少。​ 在这个代码下,比如我们要求a[l]到a[r]之间的任何一个数字从c[x],那么我们求c[x]的前缀和得到的数字肯定都是减去l的,然后[1,l-1]区间和[r+1,n]区间可以自行分析。

2023-08-29 16:12:02 184 1

原创 洛谷 P5194 Scales S

首先,学会了一种剪枝方式,反向dfs 当在一个题目当中,dfs的结束条件有一个上界的时候,我们可以从大往小dfs,这样可以大大减少搜索树的复杂度。第二,就是,注意对题目当中的条件敏感,比如这个题目,从第三个砝码开始,每个砝码至少为前两个砝码的和,斐波那契数列,我一开始就没有分析出来,我还在想1000 dfs不得搜到明年,综上,还是刷题太少了,算法学习不刷题纯小丑哈哈。​。

2023-08-26 21:26:38 339

原创 二分的个人理解

对于二分的一些个人理解

2023-08-24 23:39:16 88 1

原创 大整数的减法

大数据的减法

2022-11-06 20:23:50 985 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除