随笔分类 -  C++

摘要:引言 在学习KMP算法后,我不免想到KMP算法能在哪一个地方使用,KMP作为字符串匹配算法,我很容易想到了他的用武之地,那就是文本编辑器中的查找功能,然而,对于主流的文本编辑器而言,似乎没有多少使用KMP算法用于查找功能构建,而他们使用了一个更为高效的算法:BM算法。 一、KMP算法 1.1 暴力匹 阅读全文
posted @ 2026-02-26 10:34 reasa 阅读(158) 评论(0) 推荐(1)
摘要:背景 昨日写题的时候,偶遇一道神奇的构造题,题目是这样的: 构造一个长度为\(2^n\)的序列\(p_0,p_1,…,p_{2^n−1}\),使得相邻两项异或值之和最小。 这道题很容易就可以看出,如果要构造一个使得相邻两项异或值之和最小的序列,就要保证每个元素与相邻元素间在二进制下仅有一位的差距,而 阅读全文
posted @ 2026-02-11 12:17 reasa 阅读(299) 评论(0) 推荐(1)
摘要:源于现实的启发性算法:模拟退火与混合策略 前言 模拟退火(Simulated Annealing, SA)在算法竞赛圈素来以“玄学”著称,广泛地被用于骗分。这类方法看似不需要过多思考,参数一设,成败全看天命(和脸黑不黑)。 但在我上大学接触机器学习后,发现这个被戏称为“骗分大法”的算法,其实有着严谨 阅读全文
posted @ 2026-02-03 16:34 reasa 阅读(500) 评论(0) 推荐(1)
摘要:从0构建 3D GIF动画,看清计算机运行机制 在《从 0 构建 WAV 文件》中,我们通过了解wav文件的结构与格式,学会了如何用朴素的方式构建声音文件;在《从 2D 转 3D 的本质》中,我们领悟了游戏中所谓三维世界,不过是简单的投影。 今天我们将了解一个更加复杂但有趣的文件格式-GIF,在了解 阅读全文
posted @ 2026-01-25 15:39 reasa 阅读(609) 评论(0) 推荐(1)
摘要:从0构建WAV文件:读懂计算机文件的本质 虽然接触计算机有一段时间了,但是我的视野一直局限于一个较小的范围之内,往往只能看到于算法竞赛相关的内容,计算机各种文件在我看来十分复杂,认为构建他们并能达到目的是一件困难的事情,然而近期我观看了油管上Magicalbat大神的视频,发现其实它们的本质都惊人地 阅读全文
posted @ 2026-01-23 12:56 reasa 阅读(632) 评论(2) 推荐(6)
摘要:1.语言与计算机 递归调用 向前引用 随机化 指针类型 按位运算 2.排序 冒泡排序(起泡排序) 选择排序 插入排序 ★ Shell排序 快速排序 线性时间排序 查找第k大元素 带第二关键字的排序 3.数论(一) 素性判断 筛选建立素数表 分解质因数 进制转换 二分取幂 ★二分求解线性递推方程 4. 阅读全文
posted @ 2022-11-20 21:21 reasa 阅读(518) 评论(0) 推荐(0)
摘要:#主定理: n为问题规模,a为递推的子问题数量,n/b为每个子问题的规模,f(n)为递推意以外进行的计算工作。 a≥1,b>1为常数,f(n) 为函数,T(n) 为非负整数。则有以下结果(分类讨论): 1)若 则有 2)若则有 3)若且对于某个常数c<1和所有充分大的n有 则有 其中,大O代表的是该 阅读全文
posted @ 2022-11-01 18:40 reasa 阅读(439) 评论(0) 推荐(1)
摘要:题目传送门 从题目中我们可以看出,这道题显然是用滑动窗口来完成的。 是的,滑动窗口!而且这个滑动窗口比较容易维护,因为它窗口的大小"基本"固定,(因为还需要考虑不完整的段),只需使用一个变量来标记,而且所有的数都是从1~s的整数,因此,只需用一个数组便可以保存每个数在窗口中出现的次数。在用一个b数组 阅读全文
posted @ 2022-10-26 23:10 reasa 阅读(79) 评论(0) 推荐(2)
摘要:1.简介 模拟退火算法来源于固体退火原理,是一种基于概率的算法,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。 ————百度百科 简而言之,模拟退火是一种随机化算法,常用于信息 阅读全文
posted @ 2022-10-26 13:15 reasa 阅读(269) 评论(1) 推荐(2)
摘要:1.简介 线段树,顾名思义,就是由线段构成的树,是一个较为优秀的数据结构,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点,通常用于解决区间类的问题,在各大OI赛事中频繁出现。下面我将为你展示线段树的一些基本操作及原理 2.存储 线段树一般用结构体存储,代码如下: struct 阅读全文
posted @ 2022-10-25 14:16 reasa 阅读(375) 评论(2) 推荐(2)
摘要:1.介绍 树形选择排序(Tree Selection Sort),又称锦标赛排序(Tournament Sort),是一种按照锦标赛思想进行选择排序的不稳定排序。 2.实现原理 如图所示,给定有8个元素的数组,对该数组进行从小到大的排序。 第一步,如图所示,根据数组建立一颗满二叉树(胜者树),用于进 阅读全文
posted @ 2022-09-04 11:16 reasa 阅读(1820) 评论(1) 推荐(1)
摘要:1. 作用 lower_bound和upper_bound都是C++的STL库中的函数,作用差不多,lower_bound所返回的是第一个大于或等于目标元素的元素地址,而upper_bound则是返回第一个大于目标元素的元素地址。 从定义就可以看出两者的差别只差在是否取等的的地方 那何必要设置两个函 阅读全文
posted @ 2022-08-30 12:19 reasa 阅读(5750) 评论(0) 推荐(3)
摘要:1.简介 set是C++STL库中的一个容器,他十分的便利,所有的元素插入时都会被自动排序,并且容器内保证元素不重复,就想高一数学中讲的集合具有互异性一样,(好像set本来就叫集合容器 bushi)2.本质 set属于关联式容器,使用类似书的结构(基于红黑树的平衡二叉检索树)如图: 3.用处 构造s 阅读全文
posted @ 2022-08-26 12:08 reasa 阅读(393) 评论(0) 推荐(0)