- 博客(44)
- 收藏
- 关注
原创 浅谈并查集
本文介绍了并查集这一高效处理集合合并与查询的数据结构。首先阐述了朴素实现方法,包括父节点存储、Find和Union操作,时间复杂度为O(n)。接着提出路径压缩优化,通过查找时直接指向根节点来降低复杂度至O(logn)。进一步介绍了按秩合并/按大小合并优化,将小树合并到大树以减少树高。综合使用两种优化后,时间复杂度可达近线性O(nα(n))。最后举例说明了并查集在图论、布尔变量关系等场景的应用,包括种类并查集等扩展用法。
2025-10-30 18:33:34
904
1
原创 二叉搜索树学习笔记
本文介绍了二叉搜索树(BST)的基本概念和核心操作。BST是一种有根二叉树,满足中序遍历为有序序列的性质。文章详细讲解了BST的各类操作: 旋转操作(左旋/右旋):改变树结构而不破坏BST性质 元素操作:插入、搜索、删除(包括两种删除方法) 查询操作:最大/最小元素、前驱/后继节点 排名相关:查询元素排名和根据排名查询元素 文中指出BST操作的时间复杂度与树高度h相关,最坏情况下可能退化为O(n),因此需要平衡树机制来优化。最后提供了一个BST的实现代码示例,并提到其在洛谷题目中的测试表现。
2025-10-30 18:30:29
723
原创 浅谈 ST 表(RMQ 问题)
本文介绍了四种计算⌊log₂x⌋的方法:打表法、GCC内部函数法、C++20的bit_width函数法以及倍增法,并比较了它们的效率。接着详细讲解了ST表(稀疏表)数据结构,包括其预处理过程(递推式和时间复杂度)和查询方法(利用可重复贡献特性),并通过代码实现展示了ST表在解决静态RMQ问题中的应用。最终测试结果表明,GCC内部函数法效率最高。
2025-10-30 18:27:16
864
原创 浅谈 BSGS(Baby-Step Giant-Step 大步小步)算法
摘要: BSGS算法用于在$\mathcal O(\sqrt p)$时间内求解离散对数问题$b^l\equiv n\pmod p$。其核心思想是分块处理:先预处理$l\le \sqrt p$时的所有余数,再通过幂运算性质$b^{l+k\sqrt p}\equiv n$转化为查表问题。扩展BSGS可处理非质数模数。本文还讨论了暴力递推优化与光速幂预处理,并给出了具体代码实现,通过逆元与哈希表快速定位解。最终算法在$\sqrt p$级别时间复杂度内高效求解离散对数。
2025-10-30 18:25:00
810
原创 题解:P12603 RuShiA(特殊情况下的 RSA 爆破)
本文介绍了9种不同的RSA加密破解方法,涵盖了从暴力破解到数学技巧的各种解法。主要内容包括:Pollard-rho算法破解简单RSA、利用质数相近特性枚举、通过GCD求公约数解密、三次方根直接求明文、利用指数互质特性辗转相除,以及通过代数关系推导私钥等方法。每种方法都配有对应的解密结果和实现思路,展示了RSA加密在不同参数设置下的脆弱性。最终提供的AC记录验证了这些方法的有效性。
2025-10-30 18:22:25
856
原创 题解:P13976 数列分块入门 1(分块入门)
本文介绍了分块算法解决区间操作问题。将数列分成若干块,对于块内操作直接暴力修改,块间操作则处理不完整块并通过打标记优化。时间复杂度为O(n√n)。文中给出了C++实现代码,并讨论了数值溢出问题处理。最后提到进一步分块可优化为van Emde Boas树,实现更高效操作。
2025-10-30 18:15:33
618
原创 浅谈如何卡常
本文介绍了多种代码优化技巧(俗称"卡常"),重点分析了输入输出优化的不同实现方法。文章首先展示了基础快读的不足,逐步优化到使用fread缓冲区、mmap内存映射等底层方法,最终实现1.01s的极速读取。此外还介绍了循环展开、分支预测、内联优化等编译器可能自动完成的优化技术,强调编译器通常比人工更擅长这些优化。作者幽默地指出,与其过度优化,不如"v我50攒rp"(即靠运气),因为这些优化容易被评测机波动影响。全文通过具体代码示例展示了从基础到高级的优化技巧,为需要极致性能的场景提供了实用参考。
2025-10-30 18:14:04
1306
原创 纸上谈兵(LibreOJ #5 猜数字 1 题解)
通过几乎是纯数学方法(Task 2 不是,但是通过数学方法节约了大量枚举时间)解决了 LibreOJ #5 猜数字 1。
2025-06-10 16:49:50
1169
2
原创 浅谈中国剩余定理(Chinese Remainder Theorem,CRT)
本文主要介绍中国剩余定理以及扩展中国剩余定理的思想、原理及实现。
2025-06-09 12:47:12
1054
2
原创 复数入门
这是数轴(的一部分):这也是数轴的一部分:可见,数轴是无限长的,你可以在上面找到所有的实数,比如 114514,1919810,114514.1919810114514,1919810,114514.1919810114514,1919810,114514.1919810(114514.1919810114514.1919810114514.1919810 在 114514114514114514 和 114515114515114515 之间,靠近 114514114514114514)。等等,小学不
2024-09-29 17:04:29
1242
原创 微积分入门(真的很入门)
我们要求x→1limx−1x2−1。右边我们都知道是什么意思,那左边是什么呢?意思就是,当x无限接近1时,右边的那一坨东西是什么。x无限接近1是什么意思?管他呢,我们先直接代入x1求一下呗,然后求出来一个非常谔谔的00。然而当我们画出这个函数的图像后:这不就是一个x1吗?太 easy 了,通过直觉可知,答案是2。有个东东叫做:验算。阿哲,难道答案就是“未定义”吗?当你重新回去审视题面,你发现了被你直接遗忘掉的x→1lim。
2024-09-29 17:00:56
3651
3
原创 鸡兔同笼,但是线性代数
fkx⃗kfx⃗fx⃗y⃗fx⃗fy⃗fkxfxykfxfxfy这个fff就是一个线性映射,通常记为AAA。向量是什么:一个vector,还不懂吗。哦读者可能不是 C艹 党,所以说一下:向量就是一系列数,类似我们幼儿园就学过的数对。向量也可以用来表示一个点,学习时通常是222维或333和是坐标轴,是xxx轴,H是yyy轴,每条小线段长度为111我们要表示图中的O点,就可以用数对,注意到O点在第3。
2024-09-27 22:26:36
2505
2
原创 NtDLL.dll Nt开头函数大全 - NtPowerInformation
个参数目前必须填这几个(别说 PlatformInfomation 未定义,在 Windows.h 里),后两个参数分别填 PlatformInfo(用于接收返回值)的地址和大小。,代表的是 Windows 是否支持你的设备的电源(电池)……,否则你的程序怎么可能被运行呢(人择原理!这个函数是用来获得电源信息的,但是呢……看起来很厉害,实际上目前。类型目前只有一个布尔值。
2024-08-25 13:02:23
561
原创 哈夫曼编码(哈夫曼树)
哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。——百度百科看得懂吗?反正我看不懂。到底什么是哈夫曼编码?是f2f_2f2。为什么?哈夫曼编码,其实就是在没有二义性的情况下的最短编码方法。f2f_2f2。
2024-06-20 21:03:24
1237
原创 分治乘法详细讲解
看得懂吧?比如X123456Y987654,则n3A123B456C987D654。前置知识:整数末尾添0方法(不可能不会吧),就是乘10,当然添n个零就是乘10n2n个就是乘102n。
2024-06-09 16:06:30
694
原创 分数裂项方法及技巧
裂差知识点 111b−aab=1a−1b \frac{b-a}{ab} = \frac{1}{a} - \frac{1}{b} abb−a=a1−b1证明:b−aab=bab−aab=1a−1b \begin{align*} \\&\frac{b-a}{ab} \\= &\frac{b}{ab} - \frac{a}{ab} \\= &\frac{1}{a} - \frac{1}{b} \\\end{align*} ==abb−aabb−abaa1−b
2024-05-26 22:50:28
2643
2
原创 Python 自动打字,速度随便(目前只支持英文)
小猴编程-打字练习不错吧?不过注意速度不能超过500Mbps(500字/分,typewrite第二个参数约0.12)
2024-02-08 19:04:46
1135
原创 nginx日记 - Day2 修改nginx.conf,图片,页中页
当你想要更改index.html路径或者给index.html改名(更利于项目开发)的时候,就需要更改。
2024-01-24 21:02:04
554
原创 跑酷小游戏
这个跑酷小游戏不是真正意义上的那种,是一个人一直往前跑,按空格键改变方向(上/下),碰到齿轮失败,和poki里的差不多(在poki里的名字忘了)。
2024-01-10 13:28:32
546
原创 查看DLL文件内部
大家是不是有时候想要查看DLL文件的内容呢?打开记事本查看当然是乱码啊!先给大家看看记事本吧:其实虽然说是乱码,也不全是,比如This program cannot be run in DOS mode,这句话是有含义的,具体含义在本文末尾介绍,还有.rdata .data .text pdata .medate .rsrc .reloc等,是一些段名。
2023-06-23 11:39:14
999
6
原创 C++ 没有main/wmain/WinMain/wWinMain函数还可以运行吗
我:C++ 没有main/wmain/WinMain/wWinMain函数还可以运行吗?小白:你觉得呢?难道还可以???我:Yes,可以!白:上代码证明!!!我:好!没问题!接着。。。。。。小白白:没法链接啊我:你以为不需要在编译时加一点小小的改变?白白:好家伙......我认了!我:其实在某些情况下,"反驳xxx"和"嘿嘿"两个字符串要变成L"反驳xxx"和L"嘿嘿"哦(平台、编译器相关)
2023-05-17 14:13:52
438
原创 Windows下的Qt5.9基础教程(2:用VS编写Qt程序,也是Hello world)
被Qt的文本编辑器逼的强迫症看向这里!这是上一篇文章的后续,文中给出上一篇文章的链接!
2023-02-12 19:44:11
898
2
原创 Windows下的Qt5.9基础教程(1:下载与hello world小程序)
针对小白最最最基础的Qt安装教程,内涵如何做Hello World!小程序。
2023-02-04 21:52:51
1553
高精度类(无压位),C++,基本可以像基本类型一样使用
2024-08-13
PsTools,含PsExec,还有我自制的一个bat文件
2023-06-23
【C++】【预处理器】#if 和 #define 哪个先被处理
2025-10-15
洛谷奖项认证没有对应的学校
2023-06-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅