随笔分类 -  拓展

摘要:二维凸包问题 Andrew算法 写在前面: 本文参考自:刘汝佳《算法竞赛入门经典-训练指南》 介绍: 凸包:把给定点包围在内部的、面积最小的凸多边形。 Andrew算法是Graham算法的变种,速度更快,数值稳定性也更好。 算法实现: 首先把全部点按照x从小到大排序(x相等,则按照y从小到大排序), 阅读全文
posted @ 2022-03-06 18:48 流白李 阅读(162) 评论(0) 推荐(0)
摘要:最大子序列和问题 最大子序列和是指,给定一组序列,如 [1,-3,2,4,5],求子序列之和的最大值,对于该序列来说,最大子序列之和为 2 + 4 + 5 = 11。 这里的子序列要求是连续的,因此也可以称其为连续子数组最大和。 有几种不同的方法求解最大子序列和问题,但它们的复杂度相差甚远,尤其在面 阅读全文
posted @ 2021-10-20 12:29 流白李 阅读(1170) 评论(0) 推荐(0)
摘要:KMP算法(字符串匹配) 适用问题举例: 给定两个字符串,问:模式串是否在主串中出现过。 如果出现过,输出模式串在主串中首次出现的位置。 如果没出现过,输出-1。 暴力算法:时间复杂度为O(m*n) 1、先将模式串的第一个字符与主串的第一个字符对齐。 2、从对齐位置开始对每个字符进行逐一匹配。 3、 阅读全文
posted @ 2021-09-12 23:01 流白李 阅读(139) 评论(0) 推荐(1)
该文被密码保护。
posted @ 2021-08-28 22:02 流白李 阅读(0) 评论(0) 推荐(0)
摘要:最大公约数的求法 最大公约数——辗转相除法(欧几里得算法) 给定两个数 a,b 求最大公约数。使用辗转相除法思路如下: 对于已知的两个自然数 a,b 假设 a>b。 计算 a/b 将得到的余数记为 r 如果 r=0 ,则 b 为求得的最大公约数,否则执行下一步 将 b 的值保存到 a 中,将 r 的 阅读全文
posted @ 2021-06-17 22:40 流白李 阅读(192) 评论(0) 推荐(1)
摘要:队列结构 概念: 队列(queue):和栈相似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。一般来说,进行插入操作的一端称为队尾,进行删除操作的一端称为队头。队列中没有元素时成为空队列。 队列结构采取“先进先出”的原则处理结点数据。 分类: 以存储结 阅读全文
posted @ 2021-06-04 17:08 流白李 阅读(824) 评论(0) 推荐(1)
摘要:set 容器的入门 unordered_set:另外头文件,乱序排放,使用哈希表(便于查找) multiset:可以重复存在的集合。用count()读取个数 创建set的几种方式 常规 set<数据类型>s; 声明并初始化 set<数据类型>s{value1,value2}; set的特性 set 阅读全文
posted @ 2021-05-28 13:32 流白李 阅读(124) 评论(0) 推荐(0)
摘要:vector容器的入门 #include<vector> 创建vector容器的几种方式 数据类型可以是结构体,也能是另外一个容器 vector 的初始化: (1) 创建并声明大小 vector<数据类型>name(size);//size大小 (2) 声明大小,并且附上初始值。 vector<数据 阅读全文
posted @ 2021-05-27 20:39 流白李 阅读(115) 评论(0) 推荐(0)
摘要:定义 迭代器是一种检查容器内元素并遍历元素的数据类型,表现的像指针。 基本声明方式 容器::iterator it = v.begin();//例:vector<int>::iterator iter auto 声明方式(关于 auto 的用法很多,有兴趣可以研究一下) auto it =v.beg 阅读全文
posted @ 2021-05-27 13:28 流白李 阅读(156) 评论(0) 推荐(1)
摘要:[数据结构]并查集 概念: 并查集:是一种树型的数据结构,用于处理一些不相加集合的合并和查询问题。在使用中常常以森林来表示。 并查集也是用来维护集合的,和set得到不同之处在于并查集能很方便地同时维护很多集合。如果用set来维护会非常的麻烦。并查集的核心思想是记录每个结点的根结点是哪个结点。 主要函 阅读全文
posted @ 2021-03-07 16:13 流白李 阅读(193) 评论(0) 推荐(0)