logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

C++数据结构·结构体

本文介绍了C++中结构体的基本概念与应用。结构体是一种用户自定义的复合数据类型,用于打包相关数据(如坐标点、学生信息)。主要内容包括:1) 结构体的定义与内存分配特点;2) 核心组成部分(成员变量、运算符重载等);3) 与class的区别(默认访问权限不同);4) 典型应用场景(区间问题、图论等)。通过B2125例题演示了结构体的实际使用,包括定义学生结构体、排序比较函数等。最后建议在洛谷平台进行

#数据结构#c++#算法
C++数据结构·树状数组

树状数组(Fenwick Tree)是一种高效维护前缀和及区间信息的数据结构,通过二进制拆分优化操作,时间复杂度为O(log n)。其核心函数包括:lowbit(获取最低位1)、sum(前缀和查询)和add(单点更新)。例题P3374展示了树状数组的典型应用:单点修改和区间查询。代码实现简洁,通过二进制位运算实现高效操作。树状数组适用于大规模数据场景,是解决动态前缀和问题的理想选择。

#c++#数据结构#算法
C++算法·动态规划

动态规划(DP)是一种通过分解问题为重叠子问题并存储子问题解来提高效率的算法。本文介绍了DP的核心要素:状态定义、状态转移方程和边界条件,并分类讲解了线性DP、区间DP、树形DP等7种常见类型。通过洛谷题单推荐了相关练习题,并以"过河卒"问题为例,展示了使用二维数组标记障碍点后递推求解路径数的DP应用。文章还提及了斜率优化等DP优化技术,为初学者提供了全面的DP学习指南。

#算法#c++#动态规划
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++
到底了