基于库函数的c++算法竞赛教程(一):排序算法(1)
在 C++ 标准库中,sort 函数是实现快速排序的最常用工具。平均时间复杂度为 O(n log n)。本文将系统梳理一维数组、二维数组的排序方法,以及如何通过自定义比较函数实现复杂排序逻辑。 本文语法非特殊说名则默认采用下头文件与命名空间:#include <bits/stdc++.h>using namespace std; 一维数组排序对于普通数组,sort 的使用非常直观,需要传入起始地址和结束地址的后一位。 int arr[6] = {5, 2, 8, 1, 9, 3};sort(arr, arr + 6); // 注意是+6(6个元素)而不是+5.// 结果:1, 2, 3, 5, 8, 9 关键要点:sort 的第二个参数是结束位置的下一个地址,即 arr + n(n 为元素个数)。 二维数组排序二维数组的排序根据需求不同,主要有三种处理方式。 展平排序(视为一维)将整个二维数组在内存中视为连续的一维空间进行排序,会破坏原有的行结构。 int arr[3][4] = { {3, 1, 4,...
一个基于 Hexo+Butterfly 的便捷自定义主题生态系统(MSS)
本说明文档面向两类使用者: 使用者:只想通过配置项切换不同皮肤风格 开发者:希望在保持 Butterfly 主题结构不变的前提下,新增或修改皮肤 本文只关注“皮肤层”的能力:即所有可以通过 Stylus/CSS 覆盖实现的视觉定制,包括但不限于: 全局背景与纹理 顶部 Banner 区域 首页文章卡片 右栏卡片 页脚区域 滚动条、按钮、右侧悬浮按钮 文章版权卡片结构与样式(新增 Pug 定制) 代码块主题配色(新增变量覆盖与样式强制) Markdown 表格样式(新增局部覆盖) 多页面统一背景逻辑(新增容器覆盖) 其他能通过选择器选中并装饰的部分 皮肤生态整体设计 不改主题结构,不动业务逻辑 保持 Hexo + Butterfly 的模板结构和功能不变 只在样式层(Stylus)做“换皮肤” 通过配置切换皮肤 使用 skin.preset 指定当前皮肤 每个皮肤对应一份独立的 .styl 文件 皮肤之间互相隔离 每个皮肤文件只负责自己的配色和装饰 切换 skin.preset ≈ 一键切换整站视觉方案 深度定制与进阶能力 超越纯 CSS:支...
在知识的迷雾中航行:论不完备学习者的生存哲学
这不是一篇教你“如何高效学习”的技巧文,而是写给那些在「准备开始」与「彻底放弃」之间摇摆、在“系统学习”和真实行动之间卡住的学习者。 如果你正为「学不完」「不敢动手」「总想先打牢基础」而痛苦,也许可以在这篇文章里,找到一种与不完备性和平相处的方式。 引言:当代学习者的存在论困境我们正处在一个悖谬的时代:知识从未如此触手可及,学习却从未如此令人痛苦。一方面,系统化的课程、成体系的教材、从基础到进阶的清晰路径似乎承诺了一种确定性的进步;另一方面,无数学习者在”准备开始”与”彻底放弃”之间摇摆,在刷视频的空虚与面对书本的焦虑中反复挣扎。 这种痛苦并非源于智力的匮乏,而是源于一种深层的认识论误区:我们试图在行动之前掌握全景,在探索之前拥有地图,在提问之前穷尽答案。 我们将学习视为一场需要预先备足粮草才能发动的远征,却忘了学习本身即是勘探。 地图的暴政:论先验完备性的幻觉传统教育模式塑造了一种”高考思维”:存在一个封闭的考纲,一个确定的知识边界,以及一个明确的终点线。在这种模式下,学习被理解为线性累积的过程——先掌握基础,再攻克进阶,最后应用实践。我们称之为”地图先行”的范式:学习者必...
