自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从日期到星期:蔡勒公式与基姆拉尔森公式的完整推导

本文从零推导了计算星期几的蔡勒公式和基姆拉尔森公式。核心思路是选取公元0年3月1日为基准,将总天数分解为年份、月份和日数三部分后模7计算。关键推导包括: 年份部分通过闰年计数实现,平年贡献1天,闰年额外+1天 月份部分的精妙构造:基姆拉尔森用2m+⌊3(m+1)/5⌋捕捉31天月份分布模式 蔡勒公式通过⌊13(m+1)/5⌋实现等价功能 基准日期的选择消除了常数项 两种公式本质相同,通过数学构造完美匹配了月份天数分布规律。

2026-05-30 22:04:54 409

原创 树形DP通用模板总结

树形 DP 的本质,是利用树的递归结构,将子树信息逐层合并到父节点。由于树的子树之间相互独立,我们可以用一次 DFS 完成整个 DP 过程。与线性 DP 不同,树形 DP 的难点不在于转移方程的复杂度,而在于:状态设计:如何定义节点状态才能完整描述子树信息?信息合并:如何将多个子树的信息正确汇总到父节点?细节把控:建图、初始化、数组名……一个手滑就 WA。三、五大经典模型模型一:最大独立集问题:从树中选若干节点,要求任意两个相邻节点不能同时被选,求最大权值和。状态定义::不选节点 ,以 为根

2026-05-28 21:05:40 219

原创 【无标题】直链图片

111。

2026-05-13 17:23:08 232

原创 从 P 到 NP-Complete:一篇讲清计算复杂性核心概念

这篇文章面向第一次接触计算复杂性理论的读者。核心目标是解释一个现实现象:有些问题虽然存在算法,但在大规模输入下仍然难以实际求解。你将掌握 P、NP、co-NP、NP-hard、NP-complete 的定义、关系与应用边界,并理解它们对工程选型的直接意义。P 是“能快算”,NP 是“能快验”,co-NP 是“补问题能快验”,NP-hard 是“至少同样难”,NP-complete 是“可快验且最难”。这套框架能把“理论分类”直接转化为“工程决策”。

2026-05-08 14:27:11 403

原创 数学驱动的计算机科学全景图谱:从理论到应用

本文以“数学驱动”为主线,系统梳理了计算机科学从数理逻辑、可计算性理论、计算复杂性,到算法设计,再到密码学、优化与机器学习等应用方向的完整脉络。文章强调: 数学不仅是辅助工具,更是统一不同分支的底层语言;同时对比了数学驱动、工程驱动、数据驱动三种学习视角的差异与适用场景。适合希望建立整体认知框架、规划长期学习路径的读者。

2026-05-07 00:04:30 571

原创 约瑟夫环(代码+公式推导)

𝑛个人的编号是 1 ~ 𝑛,如果他们依编号按顺时针排成一个圆圈,从编号是 1 的人开始顺时针报数。虚拟位置: 0 1 2 ... k-1 k ... n-1。n人圈的幸存者位置: f(n) = (f(n−1)+k) mod n。基础情况:当n=1时,只有1人,虚拟位置为0,f(1)=0;对应旧虚拟位置: 旧位置 = (k+f(n−1)) mod n。假设对于 n−1 个人,公式成立,即已知 f(n−1)。,则: f(n)=(f(n−1)+k) mod n,

2026-03-15 23:08:25 412

原创 安卓值日排班表单 App(Kotlin + Jetpack Compose)

还缺的总人次 remaining = targetTotalDuty - sum(dayMin),再把这些名额逐步分配到“有余量”的天(即 dayMax -- 人员录入:按行输入人员可参与值日的起止日期区间(支持 yyyy-M-d、yyyy/M/d、yyyyMMdd 等)。- 尝试在某一天把“超目标的人”替换成“低于目标且当天也在岗的人”,如果能降低两人的总偏差就执行替换。- 一键排班:生成每一天的值日人员名单,并统计每个人在岗天数、目标值日次数、实际值日次数、误差、值日率。

2026-02-26 19:57:10 382

原创 01Trie模板

【代码】01Trie模板。

2026-02-12 19:59:59 38

原创 子数组的异或和都可以由两个异或前缀和数组通过异或得到

nums[i] ^ nums[i+1] ^ ... ^ nums[j-1] ← 因相同项异或为0,故相同项抵消。任意子数组 `nums[i:j]`(从i到j-1)的异或和 = `prefix[j] ^ prefix[i]`= 子数组 nums[i:j] 的异或和。最大子数组异或和(配合Trie树)统计异或性质相关的子数组问题。子数组异或和为K的个数。

2026-02-12 19:43:12 24

原创 循环双链表

本文实现了一个双向循环链表的数据结构,包含初始化、求表长、按值/位查找、插入、删除和输出等基本操作。链表采用带头结点的循环结构,结点包含前驱指针prior、后继指针next和数据域data。主函数演示了链表的创建(插入10个元素)、删除第10个结点、按值查找25、按位查找第5个结点等操作。输出结果展示了链表各结点的地址关系和存储值,验证了双向链表前驱后继指针的正确性。代码实现了双向链表的基本功能,便于后续扩展应用。

2025-08-25 14:58:08 147

原创 循环单链表

本文实现了一个循环单链表的基本操作,包括初始化、求表长、按序号/值查找、插入/删除节点等。链表结构包含数据域和指针域,初始化时头节点指向自身。通过头节点标记(-1)实现循环遍历。测试代码演示了插入10个节点(5-50)、查询第4个节点(值为20)、查找值为10的节点以及删除第10个节点的操作。每个节点地址唯一,链表操作通过指针移动和内存分配实现。该实现展示了链式存储结构的基本原理和操作方法。

2025-08-21 12:08:13 118

原创 双链表的头插法与尾插法的代码实现

本文展示了双向链表的两种创建方法:头插法和尾插法。头插法通过将新节点插入链表头部,而尾插法则将新节点添加至链表尾部。代码中定义了一个包含数据域和前驱/后继指针的双向链表结构,并实现了两种插入方法的函数。程序还提供了详细的链表输出函数,可显示每个节点的地址、前后驱关系及存储值。测试部分分别调用两种方法创建链表并输出结果,其中9999作为输入终止标记。该代码演示了双向链表的基本操作和内存管理。

2025-08-19 19:58:09 209

原创 双链表基础操作

本文实现了一个双向链表的基本操作,包括初始化、求表长、按值/按位查找、插入/删除节点等功能。代码首先定义双向链表节点结构,包含数据域和前后指针。主要功能包括:初始化链表、计算链表长度、按值或位置查找节点、在指定位置插入节点、删除指定位置节点以及打印链表信息。测试部分创建了一个包含10个节点的链表(值5-50),演示了删除节点、查找节点等操作,并输出节点地址、前后指针及数据值等详细信息。程序通过内存地址验证了双向链表前后指针的正确连接关系。

2025-08-19 12:26:37 287

原创 单链表(2)头插法尾插法及打印链表

该程序实现了单链表的头插法和尾插法两种创建方式。头插法将新节点插入链表头部,数据顺序与输入顺序相反;尾插法则将新节点追加到链表尾部,保持输入顺序。程序还包含链表打印功能,可输出每个节点的地址、数据和下一节点地址。用户输入以9999结束,主函数分别测试两种插入方法并打印结果。两种方法均采用动态内存分配创建节点,体现了链表灵活的内存管理特性。

2025-08-16 15:27:21 127

原创 单链表(1)

【代码】单链表(1)

2025-08-15 19:29:50 93

原创 王道线性表顺序表动态分配代码及注释

【代码】王道线性表顺序表动态分配代码及注释。

2025-08-10 15:31:07 106

原创 归并排序 C++代码实现

【代码】归并排序 C++代码实现。

2025-06-28 10:28:56 342

原创 插入排序 C++代码实现

如果从大到小排列,只需要变' > '为' < '就可以啦。

2025-06-24 19:46:29 212

原创 第一部分 基础知识(持续更新)

2.1 插入排序。

2025-06-24 19:41:06 145

原创 我的第一篇博客

用于记录我看《算法导论》的历程。

2025-06-24 19:27:27 130

空空如也

空空如也

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

TA关注的人

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