自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《算法竞赛进阶指南》0x11栈

栈是一种“后进先出”的线性数据结构。栈只有一端能进出元素,我们一般称这一端为栈顶,另一端为栈底。添加或删除栈中元素时,我们只能将其插入栈顶,或者将栈顶元素取出。

2024-07-25 16:58:41 412

原创 《算法竞赛进阶指南》0x07贪心

因为奶牛按照minSPF排序,对于当前奶牛可用的任意两瓶防晒霜x,y,如果SPF[x]<SPF[y],那么后面的奶牛只可能出现,“x,y都能用”,“x,y都不能用”,“只有x能用”这三种情况,因此x的适用范围更广,当前奶牛选择y更优,因为把x留给后面的奶牛,未来的可达状态包含了选择x时未来可达状态。选择1之后,未来可以在任意位置建立新的设备,而选择2之后,设备的位置会被局限于l[i]-r[i]的位置,因此第1项选择包括了第2项选择未来能够到达的状态。贪心算法的正确性需要证明,常用手法如下。

2024-07-25 16:57:56 1064

原创 《算法竞赛进阶指南》0x06倍增

1.对于本题,如果我们采用二分的方法,最坏时间复杂度是On2logn。n/2logn/2n/4logn/4...1log1≤nlogn因此时间复杂复杂度为n∗nlognn2logn。≤T对于普通的倍增时间复杂度为Onlog2n。

2024-07-24 17:01:34 589

原创 《算法竞赛进阶指南》0x05排序

在程序设计中通常会用到以下排序:1.选择排序、插入排序、冒泡排序2.堆排序、归并排序、快速排序3.计数排序、基数排序、桶排序前两类排序时基于比较的排序,第一类排序的时间复杂度为On2,第二类排序的时间复杂度为Onlongn。第三类排序不直接比较大小,而是对被排序的数值按照位划分,分类映射等处理方式,其时间复杂度不仅与n有关,还与数值的大小范围m有关。

2024-07-24 17:01:17 1269

原创 《算法竞赛进阶指南》0x04二分

在单调递增序列a中查找≥x的数中最小的一个。在单调递增序列a中查找≤x的数中最大的一个。对于后者为什么是(l+r+1)>>1?如果也采用(l+r)>>1,那么r-l=1时,就有mid=l,如果进入l=mid分支,会造成死循环,如果进入r=mid-1分支,造成l>r,循环不能以l=r结束。mid=(l+r)>>1不会取到r,mid=(l+r+1)>>1不会取到l。可以利用这个性质处理无解的情况,把最初的二分区间[1,n]分别扩大到[1,n+1],[0,n]。这样如果最后停在了这个下标,则说明不存在。

2024-07-23 17:44:07 637

原创 《算法竞赛进阶指南》0x03前缀和与差分

Sij1∑i​Ajsumlril∑r​AiSr−rl−1在二维数组中,可类似的求出前缀和,进一步求出部分和。

2024-07-23 17:43:38 1377

原创 《算法竞赛进阶指南》0x02递推与递归

一个实际问题的各种可能的情况构成的集合常称为”状态空间“,而程序的运行则是对于状态空间的遍历,算法和数据结构则通过划分、归纳、提取、抽象来帮助提高程序遍历状态空间的效率。递推和递归就是遍历状态空间的两种基本方式。

2024-07-22 18:29:00 561

原创 《算法竞赛进阶指南》0x01位运算

上面的是一个很有用的数,他是能满足以下两个条件的的最大整数。我们在程序设计时经常会用到memsetavalsizeofa))初始化一个int数组a,该语句把val(0x00-0xFF)填充到a的每个字节,而1个int占用4个字节,所以memset只能赋值出“每八位都相同”的int。综上,0x7FFFFFFF是memset是赋值出的最大值,但是当需要将一个数组中的数值初始化位正无穷时,为了避免加法算术上溢或者繁琐的判断,我们经常使用memseta0x3fs。

2024-07-22 18:28:38 691

原创 Part 8.3.3 最近公共祖先

两个点的最近公共祖先,即两个点的所有公共祖先中,离根节点最远的一个节点。

2024-06-30 09:53:23 672

原创 最近公共祖先(倍增,tarjan,树链剖分)

两个点的最近公共祖先,即两个点的所有公共祖先中,离根节点最远的一个节点。

2024-06-28 23:54:40 568

原创 Part 8.4 生成树

用n−1条边将图上的n个点连接起来,形成的树就被称为生成树。

2024-06-28 23:53:58 725

原创 Part 8.3.2 树的直径

树的直径被定义为树上最远的两点间的距离。

2024-06-27 01:52:58 1120

原创 树的直径两种求解方式(dfs,dp)

先以任一点为起点进行一次搜索,搜索结束后的id为下一次搜索的起点,第二次搜索完成后,所得到的id与第一次的id之间的路径就是树的直径,长度为l。两次dfs的优点是:可以记录直径的起点,再配合一个dfs可以求出直径上的每一个点。缺点:无法解决负边权的情况。

2024-06-27 01:52:03 161

原创 最小生成树模板(prim,heap-prim,kruskal)

出圈法,时间复杂度On25000100000000。

2024-06-24 19:33:48 830

原创 Part 5.2 KMP

KMP 算法可以用来解决模式串匹配问题。

2024-06-24 19:33:31 1195

原创 Part 8.2 最短路问题

很多题目都可以转化为最短路的模型。因此,掌握最短路算法非常重要。

2024-06-23 01:57:31 912

原创 最短路算法总结(dijkstra,flyod,bellmanford,spfa)

dijkstraheap−dijkstrabellmanfordspfafloydeuduvisueuduvisueudueuduvisuduOn2O((mnlogmOnmOkmnmOn3下附代码实现。

2024-06-23 01:56:39 748

原创 Part 6.3.1 线性同余方程&乘法逆元

线性同余方程是同余方程中最基础的内容。

2024-06-21 00:43:04 1078

原创 Part 6.2.2 最大公约数

如果两个数有一个共同的约数,那么这个约数就被称为公约数。最大公约数就是指这两个数的所有公约数中,最大的一个。求解两个数的最大公约数,可以采用欧几里得算法解决。

2024-06-21 00:42:44 1025

原创 Part 6.2.3 欧拉函数

欧拉函数φ(x) 表示了小于x的数字中,与x互质的数字个数。

2024-06-20 01:37:12 729

原创 欧拉函数的求解

其中以np结尾的序列重复了p^(k-1)次,每一次的循环与p ^k互质的数都有p-1个。筛法求欧拉函数实在筛法求素数的过程中同步进行的,关于线性筛求素数见。性质1的理解:一个数a是质数,前面的数b与a的gcd一定是1。性质1是性质2的特殊情况。性质2的理解:1,2,…

2024-06-20 01:36:50 191

原创 扩展欧几里得算法

问题:求ax+by=gcd(a,b)的一组整数解构造特解。

2024-06-19 01:45:26 267

原创 判断素数的方法

时间复杂度为。

2024-06-19 01:45:00 704

原创 Part 6.2.1 素数

素数,指的是除 1 和它本身之外没有其他约数的数。

2024-06-18 00:14:14 912

原创 Part 4.4 树形动态规划

树形动态规划,即在树上进行的动态规划。因为树的递归性质,树形动态规划一般都是递归求解的。

2024-06-18 00:13:32 1008

原创 Part 4.3 区间动态规划

区间动态规划一般以区间作为动态规划的阶段。

2024-06-17 23:06:43 795

原创 Part 4.2 背包动态规划

背包动态规划是线性动态规划中特殊的一类,NOIP中考到的次数也不少。

2024-06-17 23:06:26 1199

原创 背包模型模板(0/1、分组、完全、多重)

题目描述给一个能承重V的背包,和n件物品,我们用重量和价值的二元组来表示一个物品,第i件物品表示为(Vi,Wi),问:在背包不超重的情况下,得到物品的最大价值是多少?输入第一行输入两个数 V,n,分别代表背包的最大承重和物品数。接下来n行,每行两个数Vi,Wi,分别代表第i件物品的重量和价值。输出输出一个整数,代表在背包不超重情况下所装物品的最大价值。样例输入115 44 103 712 129 8样例输出119。

2024-06-02 14:15:31 1025

原创 [NOIP2015 提高组] 子串

将本题状态定义dp[i][j][k]:A串前i个位置取字符,取出来k个字串,组合得到的新串正好与B串前j个位置相等的方案数。中出现的顺序依次连接起来得到一个新的字符串。请问有多少种方案可以使得这个新串与字符串。所有合法方案如下:(加下划线的部分表示取出的字串)注意:子串取出的位置不同也认为是不同的方案。有两个仅包含小写英文字母的字符串。个互不重叠的非空子串,然后把这。的长度,以及问题描述中所提到的。,每两个整数之间用一个空格隔开。一个整数,表示所求方案数。的字符串,表示字符串。的字符串,表示字符串。

2024-06-02 10:25:33 923

原创 Part 3.4 搜索的剪枝

对于一些不必要搜索的部分,我们可以避免访问这些状态,从而提高搜索效率。

2024-06-02 10:20:18 767

原创 Part 4.1 线性动态规划

线性动态规划,即具有线性阶段划分的动态规划。

2024-06-02 10:18:35 452

原创 Part 3.3 记忆化搜索

通过将已经遍历的状态记录下来,从而减少重复的搜索量,这就是记忆化搜索。动态规划的时候,记忆化搜索也是一种高效简洁的实现方式。

2024-06-02 00:26:14 576

原创 Part 3.2 广度优先搜索

广度优先搜索(BFS),即优先扩展浅层节点,逐渐深入的搜索算法。广度优先搜索一般使用队列来实现。

2024-06-02 00:10:13 1062

原创 Part 3.1 深度优先搜索

深度优先搜索(DFS),即按照深度优先的顺序搜索的算法。深度优先搜索一般使用栈来实现。

2024-06-01 00:48:58 1376

原创 Part 2.8 前缀和 & 差分

前缀和是一种重要的预处理,能大大降低查询的时间复杂度,而差分则是一种和前缀和相对的策略。

2024-05-18 00:15:32 705

原创 Part 2.7 高精度

在 C++ 中,long long 都无法表示我们需要的整数时怎么办?那就用高精度吧!

2024-05-18 00:11:25 924

原创 Part2.5贪心

贪心,指的是决策时都采取当前最优解的算法。有的时候,这样做确实可以获得最优解。

2024-05-18 00:07:00 231

原创 Part2.4分治

分治,即分而治之,将大问题分解为小问题,分别求解,最后合并结果。

2024-05-18 00:02:03 1183

原创 Part2.3二分答案

对一个满足单调性质的问题,我们可以采用二分答案的方法来解决。

2024-05-17 23:57:57 803

原创 Part2.2排序算法

通过排序,我们可以将数据有序化,这让我们对数据的处理方便了很多。

2024-05-17 23:53:24 831

高分辨率遥感影像输电杆塔智能检测方法_宋成根 (1).caj

高分辨率遥感影像输电杆塔智能检测方法_宋成根 (1).caj

2023-04-03

空空如也

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

TA关注的人

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