logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

C++数据结构·堆

堆是一种重要的完全二叉树数据结构,分为最大堆和最小堆两种类型。最大堆的每个节点值大于等于子节点,最小堆则相反。堆通常用数组表示,支持O(log n)的插入和删除操作,能O(1)获取最大/最小值。本文详细介绍了堆的特性、表示方法和时间复杂度,并提供了C++模板代码,包括STL优先队列和手写堆的实现。通过合并果子问题(P1090)展示了堆的实际应用,给出了两种AC代码方案。最后推荐了相关刷题题单,帮助

#c++#数据结构#算法
C++算法·贪心例题讲解

本文研究了字符串分割问题,给定一个长度为n的字符串s和整数k,要求将s分割为k+1段连续非空子串,计算所有可能的分割价值。价值定义为各子串极长颜色段数之和。通过分析字符串的特征分界点,推导出最小和最大可能价值,并给出计算两种极端情况的公式。最终答案即为可能价值区间的大小。当无法分割时输出0。该解法通过贪心策略确定边界,时间复杂度为O(n),适用于大规模数据。

#c++#算法#贪心算法 +1
C++数据结构·堆

堆是一种重要的完全二叉树数据结构,分为最大堆和最小堆两种类型。最大堆的每个节点值大于等于子节点,最小堆则相反。堆通常用数组表示,支持O(log n)的插入和删除操作,能O(1)获取最大/最小值。本文详细介绍了堆的特性、表示方法和时间复杂度,并提供了C++模板代码,包括STL优先队列和手写堆的实现。通过合并果子问题(P1090)展示了堆的实际应用,给出了两种AC代码方案。最后推荐了相关刷题题单,帮助

#c++#数据结构#算法
C++数据结构·线段树

线段树是一种高效处理区间操作的数据结构,支持区间查询和区间更新,时间复杂度均为O(log n)。其核心是通过二叉树预处理区间信息,叶子节点存储原始数据,非叶子节点存储子区间合并结果(如区间和、最值)。与普通二叉树不同,线段树节点表示区间范围而非单一数据,适合动态区间统计问题。模板代码包含建树、懒标记下传、区间查询和更新操作,典型应用如洛谷P3372题解所示,通过线段树实现区间加减和求和功能,4倍空

#数据结构#c++
到底了