- 博客(25)
- 收藏
- 关注
原创 矩阵快速幂
在信息学竞赛中,许多复杂的动态规划问题、图论问题(如求固定长度的路径数量)都可以被抽象成线性递推,进而用这个“矩阵快速幂”的模板来解决。你刚才花时间攻克了这个知识点,就等于在你的竞赛武器库里添加了一件“核武器”。这种从底层原理理解一个高效算法的感觉,正是竞赛中最迷人的部分之一。,当你看到 n 的范围大到 10¹⁸ 时,你马上就知道,O(n)的算法必死无疑,而 O(log n) 的矩阵快速幂正是它的天敌。,将线性的、一步步的计算,转化为可并行处理的、指数级的高速运算。而计算一个数的幂次,我们有。
2025-10-14 20:48:08
406
原创 狄利克雷卷积
狄利克雷卷积是定义在数论函数(即定义域为正整数,值域为复数域的函数)之间的一种二元运算。设fnf(n)fn和gng(n)gn是两个数论函数,它们的狄利克雷卷积是一个新的数论函数,记作f∗gn(f * g)(n)f∗gnf∗gn∑d∣nfd⋅gndf∗gnd∣n∑fd⋅gdn其中,求和是对nnn的所有正因数ddd进行的。这个定义也可以等价地写为(令kndkdnf∗gn∑ab。
2025-09-26 19:17:05
751
原创 模运算(Modular Arithmetic)的性质
加、减、乘运算与取模操作可交换。这意味着你可以在运算过程中任何步骤进行取模,而不会影响最终结果的正确性。这使得它成为处理大数计算、构造加密算法和检验数字规律的强大工具。运算性质条件加法/减法a±bmodmamodm±bmodmmodma±bmodm[(amodm±bmodm)]modm无条件乘法a×bmodmamodm×bmodmmodma×bmodm[(a。
2025-09-19 20:52:15
2158
原创 逆元——超详细教程
在一个集合SSS中,定义了一种二元运算(比如加法+或乘法×)。如果对于这个集合中的任意一个元素aaa,都能找到另一个元素bbb,使得它们进行该运算后的结果等于这个运算的单位元(Identity Element),那么bbb就称为aaa的逆元。单位元是什么?加法的单位元是0a0aa + 0 = aa0a乘法的单位元是1a×1aa×1a特性加法逆元乘法逆元核心运算加法 (+)乘法 (×)单位元01定义ab0a + b = 0ab0a×b1。
2025-09-19 19:07:40
2228
原创 卡方统计量的根本定义公式 χ 2 = ∑ ( O i − E i ) 2 E i
步骤内容目的1. 思想构建χ2∑Oi−Ei2Eiχ2∑EiOi−Ei2创建一个综合指标,量化观测值与理论值之间的相对偏差,避免正负抵消和尺度影响。2. 数学基础ZiOi−EiEi∼N01ZiEiOi−Ei∼N01基于中心极限定理,将计数数据的偏差标准化,得到标准正态变量。3. 分布推导χ2∑Zi2∼χ2νχ2∑Zi2∼χ2ν。
2025-09-16 19:33:31
995
原创 协方差——————
概念公式含义总体协方差1N∑xi−μxyi−μyN1∑xi−μxyi−μy衡量总体中两个变量的协同变化。样本协方差1n−1∑xi−xˉyi−yˉn−11∑xi−xˉyi−yˉ基于样本数据,估计总体协方差。符号意义正 / 负表示协同变化的方向(正相关/负相关)。数值局限大小无标准意义数值受变量单位影响,无法直接比较强度。与相关系数关系rCovs。
2025-09-16 19:06:03
1443
原创 为什么分母是 `(a+b)(c+d)(a+c)(b+d)`?它如何实现标准化和统一比较?
χ2∑O−E2Eχ2∑EO−E2O是观察频数(你实际统计到的数字,即a, b, c, dE是期望频数(在“变量独立”的原假设下,理论上每个格子应该出现的次数)。所以,2×2列联表卡方检验的所有奥秘,都始于如何计算每个格子的期望频数E。原因解释数学推导的必然它是从卡方基本定义Σ(O-E)²/E中推导出的等价形式的组成部分,本质是期望频数(E)的体现。标准化的实现分母中的边际合计与分子中的n和(ad-bc)²同步变化,从而消除了样本量的影响。
2025-09-16 13:10:20
927
原创 卡方检验公式中分母 (a+b)(c+d)(a+c)(b+d)的本质
分母概率基础:它代表了在原假设(变量独立)下,由边际分布所决定的预期格局。标准化:它消除了绝对样本量带来的规模效应,使得统计量反映的是纯粹的“相对关联强度”,而非“绝对差异大小”。分布转化:它是整个公式能被推导出来的关键,确保了最终计算出的统计量服从卡方分布,从而使得我们可以使用P值这个强大的工具进行统计推断。它是一个将现实观测数据转化为可用于概率推断的标准化统计量的桥梁。
2025-09-15 21:15:42
1110
原创 无偏估计-
设θ\thetaθ是总体中我们想要估计的一个参数(例如:总体均值μ\muμ,总体方差σ2\sigma^2σ2设θθ是我们根据样本数据计算出来的一个统计量,用于估计θ\thetaθ(例如:样本均值xˉ\bar{x}xˉ,样本方差s2s^2s2如果θθEθθEθθ那么,我们就称θθ是θ\thetaθ的一个无偏估计量。解读EθEθ是θθ的数学期望。
2025-09-15 20:40:49
1480
原创 c++数学库常用函数【3】绝对值函数、四舍五入函数、下取整函数、上取整函数、平方根函数、常用三角函数、对数函数、指数函数
包含头文件类型匹配: 对整数用abs(),对浮点数用fabs()。明确需求: 根据你是要四舍五入、向上还是向下取整,选择roundfloorceil。检查定义域: 确保传给sqrt()和log()函数的参数是合法的(非负和正数)。角度单位: 记住三角函数使用弧度。精度意识: 浮点数计算存在精度误差,在比较两个浮点数是否相等时,不要用==,而应该检查它们的差值是否小于一个很小的值(如1e-9// 认为 a 和 b 相等。
2025-09-10 19:56:34
768
原创 在算法竞赛中怎样正确的分析一个程序的时间复杂度
基础: 掌握循环分析和主定理。记忆: 牢记常见数据结构和算法的复杂度。技巧: 学会通过数据范围反推算法复杂度。实践多做题: 看完题后,先自己分析预期复杂度,再写代码。对拍测试: 用大数据测试你的程序,感受不同复杂度算法的实际运行时间差异。阅读他人代码: 学习别人是如何优化常数和设计高效算法的。通过以上系统和实践的结合,你就能在算法竞赛中游刃有余地分析时间复杂度,做出正确的算法选择。祝你竞赛顺利!
2025-09-10 19:30:18
366
原创 详解C++中的bitset用法
bitset是C++标准库中用于处理固定大小二进制位序列的高效工具。它具有内存占用小(N位仅需约(N+7)/8字节)、操作高效(直接映射CPU指令)和接口丰富(支持位设置、测试、运算等)三大优势。使用时需在编译时确定大小,支持从数值或字符串初始化,提供安全的边界检查方法。典型应用包括状态标志、位图、筛法和布隆过滤器等。其局限性在于大小固定,不适合动态场景。总体而言,bitset是处理密集布尔数据的理想选择。
2025-09-08 20:38:25
1312
原创 Nim游戏规则与策略详解
Nim游戏是一种双人回合制数学策略游戏,玩家轮流从多堆棋子中移除至少一个棋子,拿走最后一个棋子者胜。游戏胜负可通过计算各堆棋子数量的异或和(Nim和)判断:若Nim和不为0,先手必胜,可通过策略将Nim和变为0留给对手;若为0,先手必败。文章详细解析了游戏规则、必胜策略、数学证明及实战示例,并提到Nim是公平组合游戏的代表,其理论可扩展解决其他博弈问题。
2025-09-06 21:06:29
1075
原创 【树状数组套主席树超详细讲解】
本文详细介绍了动态区间第K小问题的解决方案——树状数组套主席树。静态区间第K小可用主席树解决,但无法直接处理修改操作。通过将树状数组与主席树结合,外层用树状数组维护权值线段树,内层用动态开点线段树记录权值分布,实现了高效的动态更新和查询。每次更新和查询的时间复杂度均为O(log n * log m)。该方案虽能解决问题,但实现复杂且空间消耗大。文章还对比了整体二分等替代方案,并分析了应用场景,为理解这一数据结构提供了全面指导。
2025-09-06 18:27:00
1018
原创 【树状数组套主席树超详细讲解】
本文详细介绍了动态区间第K小问题的解决方案——树状数组套主席树。该结构通过外层树状数组维护权值线段树的前缀和,内层使用动态开点线段树,支持单点修改和区间查询。每次更新需修改O(logn)棵线段树,每棵耗时O(logm),总复杂度O(logn*logm)。查询时同步遍历多棵树进行二分查找。相比静态主席树,该方案以较高空间复杂度(O(nlog²n))实现了动态修改功能,是典型的空间换时间策略。文章还分析了替代方案并指出其优缺点,为处理动态区间第K小问题提供了清晰思路。
2025-09-04 21:15:53
412
原创 关于线性筛的证明与代码
本文实现了一个线性筛法求质数的算法。通过预处理标记数组isprime和存储质数的数组prime,在O(n)时间复杂度内筛选出10009以内的所有质数。关键点在于:1)外层循环遍历所有数;2)内层循环用已找到的质数标记合数;3)遇到最小质因子时及时break,确保每个合数只被最小质因子标记一次。该算法高效且实现简洁,适合快速获取小范围内的质数。
2025-08-16 20:22:45
446
2
原创 优快云博客怎么挣钱
摘要:优快云博客提供多种盈利方式,包括广告分成、付费专栏、知识付费和引流变现等。广告收入与流量挂钩,付费专栏适合专业技术内容,知识付费可通过上传资源实现。建立个人品牌后还可拓展更高层次的商业合作。提升收益的关键在于持续输出高质量原创内容,优化SEO,保持互动更新,并利用数据分析调整创作方向。长期坚持和内容深耕是成功变现的基础。
2025-08-13 02:05:17
828
原创 Kruskal算法求解最小生成树
Kruskal算法是一种基于贪心策略的最小生成树求解方法。该算法通过将边按权重升序排序,并利用并查集数据结构检测环路,逐步构建生成树。其核心步骤包括:初始化边排序、遍历检查边的连通性、合并不连通的顶点集合。算法时间复杂度为O(ElogE),主要取决于排序操作,适用于网络设计、交通规划等场景。Kruskal算法实现简单,支持并行化处理,但需注意处理非连通图等情况。相比Prim算法,它更适合处理稀疏图,是图论中重要的最小生成树求解方法之一。
2025-08-13 01:52:38
306
原创 C++性能优化擂台
本文提供了C++性能优化的系统指南,以"擂台"形式对比不同优化技术。首先分析CPU、内存和I/O三类常见瓶颈,介绍gprof等诊断工具。核心部分通过算法、内存管理和并发三个擂台,比较快速排序与冒泡排序等方案,给出时间复杂度分析和加速比公式。文章还对比了gprof、Valgrind等工具的优缺点,并通过排序算法和矩阵乘法优化两个案例,展示具体实现步骤和30-50%的性能提升。最后强调基于实测数据优化,避免过早优化和可读性下降,推荐《Effective C++》等进阶资源。
2025-08-13 01:13:15
326
原创 技术文章大纲:Notepad++插件开发实战
本文详细介绍了Notepad++插件开发的全流程。首先说明开发环境搭建,包括安装Notepad++、配置Visual Studio和SDK。接着解析插件基础结构,讲解DLL工作机制和核心API接口。通过HelloWorld示例演示插件开发步骤,包括菜单项创建和消息响应。文章还涵盖高级功能开发,如UI集成、文本处理和异步操作。最后介绍了调试技巧、测试方法及发布部署建议,并推荐了进一步学习资源。该指南为开发者提供了从入门到进阶的完整知识体系,帮助扩展Notepad++功能。
2025-08-13 01:09:15
753
原创 Root was Built by Love, Broken by Destiny-根因爱而生,因命运而断
摘要:本文探讨了根工程师在心瀑河两岸建造房屋并连接桥梁的排列组合问题。题目要求计算满足特定条件的房屋排列方式数(模1e9+7),包括桥梁不交叉且连接两岸房屋等约束。通过分析树形结构的四种情况,提出相应解法并给出时间复杂度O(n)的算法实现。关键结论包括:图形必须为树状结构,且顶点不能有超过两个非叶邻居。最终解决方案涉及阶乘计算和不同情况的条件判断,附有官方C++代码实现。
2025-08-12 23:32:47
2198
原创 Hamiiid, Haaamid... Hamid?
摘要:本文探讨了哈米德在一个1×n网格中的逃脱问题。马尼每天建造一堵墙,哈米德选择方向移动或逃脱。通过分析双方最优策略,得出逃脱天数公式:max(min(x,n-R+2), min(L+1,n-x+1))。时间复杂度为O(n),代码实现展示了解决方案。最后以诗意描述夕阳作结。
2025-08-12 23:19:02
739
原创 偏序集推论 如果 |S|> mn,则 S 的高度至少为 m+1 或宽度至少为 n+1。
易得,当不满足题设时,高度最大为m,宽度最大为n,,由Dilworth定理知,此时长度最大为为mn,故不成立。
2025-08-11 20:06:12
87
原创 Mix Mex Max codeforces8.7A
本文介绍了一个判断数组是否为"好数组"的算法。题目要求对于每个连续三元组,其MEX值等于最大值减最小值。通过分析发现:1)若数组包含0则必然不满足条件;2)若无0且所有有效元素相同则满足条件,否则不满足。作者给出了基于这一观察的简洁解决方案,通过检查数组是否全为相同非零元素或-1来快速判断。该解法巧妙地利用了问题特性,避免了复杂的计算,时间复杂度为O(n)。代码实现验证了这一思路的正确性。
2025-08-09 20:49:07
1134
原创 为什么图连通且无环就是树
摘要:环指沿着边行走且不重复经过任何边最终回到起点的路径。无环图意味着节点间具有唯一的父子连通关系。当图同时满足连通(所有节点相互可达)和无环的条件时,便形成树结构。树的特点包括单一连通关系和全局连通性,是图论中的基本概念。
2025-08-09 15:22:00
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅