自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 位运算基础与进阶

原理:负数在计算机中以补码存储(反码 + 1),相与后只保留最右边的 1。应用:这是树状数组(Binary Indexed Tree)的核心。在解决动态规划(DP)或搜索问题时,常用一个。原理:2 的幂次二进制只有一个 1,会让该位变 0 且低位全变 1。(表示 $n$ 个位置全是 1)。),此方法会让变量变为 0。指向同一个内存地址(即。(结果为 0 或 1)。,位数从 0 开始。

2026-04-27 17:33:34 51

原创 算法题解笔记:[洛谷 P1113] 杂务

拓扑排序是针对**有向无环图(DAG)**的一种排序算法。用最通俗的话来说:它就是把一堆错综复杂的“前置任务”和“后续任务”,整理成一个绝对合法的、线性的执行顺序直观理解:排课表、技能树点亮顺序、工程流水线安装。拓扑排序的通用算法 (Kahn算法)统计所有节点的入度(有多少条边指向它)。将所有入度为 0(无前置依赖)的节点放入队列。取出队首节点,将其加入结果序列,并将该节点指向的所有后续节点的入度减 1。如果某个后续节点入度变为 0,将其加入队列。重复直到队列为空。本质模型:这是一个在。

2026-03-03 11:47:27 658

原创 程序设计实习C++部分笔记

类(class)是对一类对象的抽象描述,用来封装数据(成员变量/属性)和操作这些数据的方法(成员函数/行为)。类是类型,对象是类的实例。面向对象三大特性:封装、继承、多态1.3 对象的实例化与使用访问成员:用 “ 运算符。类内定义:类外定义,使用作用域:二、构造函数和析构函数2.1 一般构造函数类中的成员变量一般都会进行私有化,即在 访问控制符下创建,而变量的初始化一般是在构造函数中进行。2.2 初始化列表初始化列表可以简化构造函数的写法。2.

2026-03-02 14:36:51 899

原创 C++并查集

并查集是一种树形的数据结构,主要用于处理一些不相交集合的合并及查询问题。查询 (Find):确定某个元素属于哪个子集。它可以用来判断两个元素是否在同一个集合里(比如:你和他是同一个圈子的吗?合并 (Union):将两个子集合并成一个集合(比如:两个本来不认识的圈子,因为两个人的认识而连在了一起)。

2026-03-01 14:42:15 362

原创 算法笔记:洛谷 P1108 低价购买

fif[i]fi:以第iii天价格结尾的最长下降子序列长度。tit[i]ti:以第iii天价格结尾且长度为fif[i]fi的不同方案总数。

2026-02-24 20:12:37 910

原创 洛谷 P1214 [USACO1.4] 等差数列

算法题中尽量用bool数组代替集合。

2026-02-23 20:58:00 961

原创 动态规划——删除k个求最值/选特定长度的最佳子序列

这是一种“通过枚举上一个状态”来消除后效性的动态规划(DP)思想。本书是必须保留的最小不整齐度。,我们需要枚举上一本被保留的书。

2026-02-13 21:48:09 1018

原创 Markdown基础语法

GitHub 在标准 Markdown 基础上增加了一些特有功能,称为。:直接粘贴 URL,GitHub 会自动将其转为可点击的链接。可以直接链接到仓库中编号为 12 的任务单(Issue)。代表二级标题,以此类推(最多支持六级)。可以直接提醒对应的 GitHub 成员。,可以打开侧边实时同步预览,一边写一边看。开头,通常用于标注警告、提示或说明。(在 GitHub 上非常实用)。cpp),即可实现语法高亮。)即可在当前窗口查看预览。:输入三个以上的减号。包围,并注明语言(如。

2026-02-07 23:37:59 226

原创 C++基础语法笔记

支持容器:vector, deque, string, array, list。所有成员共享起始地址,内存对齐(大小取最大成员的整数倍)。生命周期贯穿整个程序,仅初始化一次,存储在静态区。绝对不能返回局部变量的引用(会导致悬空引用)。全局变量、静态变量 (static)、常量。定长数组,无法自动初始化,必须手动初始化。节省内存,通过不同视角解析同一段内存。无返回值,名字必须与类/结构体相同。(自动保留 6 位小数,不灵活)(首选,支持大部分连续内存容器)必须初始化,一旦绑定不可更改。对象创建时自动初始化。

2026-02-06 20:33:45 540

原创 多策略最优决策问题

再用“基础策略”去修正每一秒的状态。因为基础策略不消耗资源,它是保底收益。:先只考虑“最强策略”及其配套的“资源恢复”方案,更新一遍最优解数组。:通常存在两种或多种移动/操作方式(如:平放、爆发技能、资源恢复)。:操作之间共用一种或多种资源(如:时间、魔法值、体力)。:必须在规定的时间内(或步数内)达到目标。另一种(跑步),但受到资源(蓝量)限制。

2026-02-04 20:34:23 191

原创 C++作业调度问题

从 start_from 开始向后遍历,直到连续 cost 个时间点对应的机器都处于空闲。这类题目最容易掉入“按时间一分钟一分钟模拟”的陷阱(你第一版代码的问题)。T_start >= 该工件前一道工序的结束时间 + 1。时间轴长度通常开到 10000 以上以防溢出。按照题目给出的优先顺序,依次为每个任务寻找。记录机器在某一时刻是否被占用。:记录该工件上一次工序何时结束。:记录该工件目前该做第几个工序。

2026-01-29 23:01:04 169

原创 C++二分细节敲定规则

因为左界为开,遇到可取值时始终以该值为新的左界,故左界一直代表可取值;反之,若求最小值,返回。时终止,返回什么根据求最大值或最小值而定,若求最大值,返回。时终止,返回什么根据求最大值或最小值而定,若求最大值,返回。,因为右界始终是可取值;反之,若求最小值,返回。

2026-01-26 21:59:15 38

原创 环状路径计数——传球游戏

洛谷:传球游戏表示第i次传球传到第j人的方案数,状态转移方程为:

2026-01-26 21:09:38 40

原创 C++卷积&&截断卷积

朴素卷积其实等同普通高精度算法,时间复杂度均为O(m*n),之所以当运算量很庞大时采用卷积而非普通高精度,是因为卷积可以通过分块从而使 m 和 n 表示块数而不再是位数。只计算卷积结果中“我关心的那一部分”,其余部分在计算过程中直接丢弃,如乘法结果只取最低 K 位。,以至于高精度计算会超时,就应采用卷积。

2026-01-20 19:07:06 337

原创 C++动态规划——一维 k-median(邮局问题)

left = (pos[mid]+pos[mid]+…)−(pos[l]+pos[l+1]+…),利用前缀和即可以O(1)计算cost[l][r],最终以O(m。区间含点数为偶数时,建在 (l+r)/2~(l+r)/2+1 保证距离和最小;解释:cost[l][r] = left + right,以 left 为例,cost[l][r] 表示在区间[l,r]上只建一个设施时的最小距离和。状态定义:dp[i][j] = 前 i 个点,建 j 个设施的最小距离和。得到pos[m+1]坐标数组。

2025-12-31 12:26:00 342

原创 C++求最长回文子串——Manacher(马拉车)算法

p[i] 表示:以 i 为中心,向左右能扩展的最大半径,即为去掉填充字符后回文串的长度。所有回文长度统一为“奇数”;回文中心永远是一个字符;始末特殊字符避免扩展时超出边界。求最长回文子串(长度),数据规模超大时唯一可行的O(n)算法。,避免重复扩展,从而把所有扩展操作压缩到 O(n)。right :该回文能覆盖到的最右端位置。最长回文子串长度 = max(p[i])center:当前最右回文的中心。③ 尝试继续向两边扩展。② 初始化 p[i]

2025-12-23 18:17:46 390

原创 C++分治思想

分治(Divide and Conquer) 是一种常用的算法设计思想,其核心理念是将一个复杂的问题。将大图视作由k个自相似的小图拼成,本质是“画布”的拆分----定位画布的左上角。逆序对是在归并排序的基础上进行:当两个子数组合并时,,逐一解决子问题后,再将结果合并,得到原问题的解。当k为偶数,S(k)=S(k/2)*(1+A。当k为奇数,S(k)=S(k-1)+A。且排序与计算逆序对数同时进行。求 S(k)=A+A。2.逆序对&归并排序。

2025-12-19 19:01:32 167

原创 C++贪心———区间覆盖&区间调度(按照端点排序)

给你很多区间,让你用最少个数,覆盖一个目标区间”“从一堆区间中,选最多个互不重叠的区间”

2025-12-18 14:32:03 381

原创 C++算法:连续时间+多任务并行(二分)

把炸锅看成一个“资源池”:每 1 秒,炸锅消耗 k 单位工作量,第 i 个鸡排最多能提供 t[i] 单位工作量,在 T 秒内,第 i 个鸡排最多贡献。有 n 个任务(鸡排),第 i 个任务需要 t[i] 的总处理时间,同时最多(且必须)处理 k 个任务,任务可随时切换,但完成的任务不能再占用资源。浮点数二分:当答案为浮点数时,二分终止条件不再是left>right,而是用一个较大的二分次数来限制。左边:所有鸡排在 T 秒内最多能提供的炸制时间。右边:炸锅在 T 秒内必须消耗的炸制时间。

2025-12-17 19:59:47 372

原创 C++连续自然数和

连续区间长度设为 k(至少为 2),起点为 L,则:L+(L+1)+⋯+(L+k−1)=M;求和公式:kL+2k(k−1)​=M;化简:L=[M−2k(k−1)]​​/k;因此对所有 k 从 2 开始枚举,一直到2k(k-1)>=M进行剪枝即可。

2025-12-10 19:05:36 296

原创 C++快速幂,高精度运算

C++快速幂、高精度运算

2025-11-25 15:42:40 263

原创 C++基础语法笔记整理

C++些许语法零碎整理

2025-11-25 13:11:18 356

空空如也

空空如也

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

TA关注的人

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