随笔分类 -  ACWing

摘要:24.Acwing基础课第3302题-简单-表达式求值 题目描述 给定一个表达式,其中运算符仅包含 +,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。 注意: 数据保证给定的表达式合法。 题目保证符号 - 只作为减号出现,不会作为负号出现,例如,-1+2,(2+2)*(-(1 阅读全文
posted @ 2026-03-31 15:39 CodeMagicianT 阅读(1) 评论(0) 推荐(0)
摘要:23.Acwing基础课第828题-简单-模拟栈 题目描述 实现一个栈,栈初始为空,支持四种操作: push x – 向栈顶插入一个数 xx; pop – 从栈顶弹出一个数; empty – 判断栈是否为空; query – 查询栈顶元素。 现在要对栈进行 MM 个操作,其中的每个操作 33 和操作 阅读全文
posted @ 2026-03-31 15:39 CodeMagicianT 阅读(1) 评论(0) 推荐(0)
摘要:22.Acwing基础课第827题-简单-双链表 题目描述 实现一个双链表,双链表初始为空,支持 5 种操作: 在最左侧插入一个数; 在最右侧插入一个数; 将第 k 个插入的数删除; 在第 k个插入的数左侧插入一个数; 在第 k 个插入的数右侧插入一个数 现在要对该链表进行 M 次操作,进行完所有操 阅读全文
posted @ 2026-03-31 14:30 CodeMagicianT 阅读(3) 评论(0) 推荐(0)
摘要:21.Acwing基础课第826题-简单-单链表 题目描述 实现一个单链表,链表初始为空,支持三种操作: 向链表头插入一个数; 删除第 k个插入的数后面的数; 在第 k个插入的数后插入一个数。 现在要对该链表进行 M次操作,进行完所有操作后,从头到尾输出整个链表。 注意:题目中第 k个插入的数并不是 阅读全文
posted @ 2026-03-30 13:31 CodeMagicianT 阅读(18) 评论(0) 推荐(0)
摘要:20.Acwing基础课第803题-简单-区间合并 题目描述 给定 n个区间 [li,ri],要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。 输出合并完成后的区间个数。 例如:[1,3]和[2,6]可以合并为一个区间 [1,6]。 输入格式 第一行包含整数 n。 接下来 n行,每行包 阅读全文
posted @ 2026-03-28 11:08 CodeMagicianT 阅读(2) 评论(0) 推荐(0)
摘要:19.Acwing基础课第802题-简单-区间和 题目描述 假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。 现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。 接下来,进行 m 次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] 之间的所有数的和。 输 阅读全文
posted @ 2026-03-28 10:04 CodeMagicianT 阅读(62) 评论(0) 推荐(0)
摘要:18.Acwing基础课第801题-简单-二进制中1的个数 给定一个长度为 n的数列,请你求出数列中每个数的二进制表示中 11 的个数。 输入格式 第一行包含整数 n。 第二行包含 n个整数,表示整个数列。 输出格式 共一行,包含 n个整数,其中的第 i个数表示数列中的第 i个数的二进制表示中 11 阅读全文
posted @ 2026-03-27 23:05 CodeMagicianT 阅读(3) 评论(0) 推荐(0)
摘要:17.Acwing基础课第2816题-简单-判断子序列 题目描述 给定一个长度为 \(n\) 的整数序列 \(a_1,a_2,…,a_n\)以及一个长度为 m 的整数序列 \(b_1,b_2,…,b_m\)。 请你判断 \(a\) 序列是否为 \(b\) 序列的子序列。 子序列指序列的一部分项按原有 阅读全文
posted @ 2026-03-27 22:18 CodeMagicianT 阅读(10) 评论(0) 推荐(0)
摘要:16.Acwing基础课第800题-简单-数组元素的目标和 题目描述 给定两个升序排序的有序数组 \(A\) 和 \(B\),以及一个目标值 \(x\)。 数组下标从 0 开始。 请你求出满足 \(A[i]+B[j]=x\)的数对 \((i,j)\)。 数据保证有唯一解。 输入格式 第一行包含三个整 阅读全文
posted @ 2026-03-27 20:55 CodeMagicianT 阅读(5) 评论(0) 推荐(0)
摘要:7.双指针算法 1. 核心定义与核心思想 定义:通过两个指针在序列(或两个序列)上移动,协同完成任务的算法,本质是利用问题的单调性优化枚举效率。 核心价值:将朴素枚举的 O(n2) 时间复杂度优化为 O(n)(两个指针总移动次数不超过 2n)。 单调性本质:随着一个指针(如右指针)的向后移动,另一个 阅读全文
posted @ 2026-03-27 20:15 CodeMagicianT 阅读(9) 评论(0) 推荐(0)
摘要:6.差分(快速区间 / 子矩阵更新) 核心思想 差分是前缀和的逆运算,通过预处理差分数组,将 “区间加 C” 从 O (n) 优化为 O (1),最终通过前缀和还原原数组。 1. 一维差分 定义 原数组a[1..n],差分数组b[1..n],满足a[i] = b[1] + b[2] + ... + 阅读全文
posted @ 2026-03-27 17:02 CodeMagicianT 阅读(16) 评论(0) 推荐(0)
摘要:14.Acwing基础课第798题-简单-差分矩阵 题目描述 输入一个 \(n\) 行 \(m\) 列的整数矩阵,再输入 qq 个操作,每个操作包含五个整数 \(x1,y1,x2,y2,c\) 其中 \((x1,y1)\)和 \((x2,y2)\)表示一个子矩阵的左上角坐标和右下角坐标。 每个操作都 阅读全文
posted @ 2026-03-27 16:55 CodeMagicianT 阅读(4) 评论(0) 推荐(0)
摘要:5.前缀和 核心思想 通过预处理生成前缀和数组,将 “区间和查询” 从 O (n) 优化为 O (1),适用于多次查询的场景。 1. 一维前缀和 定义 原数组a[1..n](下标从 1 开始),前缀和数组s[1..n],其中s[i] = a[1] + a[2] + ... + a[i]; 区间和公式 阅读全文
posted @ 2026-03-27 15:11 CodeMagicianT 阅读(14) 评论(0) 推荐(0)
摘要:4.高精度计算 一、高精度算法(仅 C++ 需掌握) 核心背景 Java 有大整数类、Python 默认支持无限大数,C++ 需通过数组模拟大整数运算,适用于位数超 1e6 位的整数(数值范围远超long long)。 存储规则 逆序存储:将大整数的个位存在数组下标 0 位,高位依次往后存(如 12 阅读全文
posted @ 2026-03-27 14:48 CodeMagicianT 阅读(4) 评论(0) 推荐(0)
摘要:3.二分算法 核心本质:找 “边界”,而非 “单调性” 误区:认为 “只有有序数组才能二分”,实际只要区间能划分为 “满足性质” 和 “不满足性质” 两部分,即可二分; 核心:每次缩小一半区间,且保证 “答案始终在区间内”,直到区间长度为 1(整数)或足够小(浮点数)。 3.1 整数二分:边界处理是 阅读全文
posted @ 2026-03-27 14:43 CodeMagicianT 阅读(6) 评论(0) 推荐(0)
摘要:6.Acwing基础课第790题-简单-数的三次方根 题目描述 给定一个浮点数 n,求它的三次方根。 输入格式 共一行,包含一个浮点数 n。 输出格式 −10000≤n≤10000 数据范围 1000.00 输入样例 6 3 1 2 2 3 3 4 3 4 5 输出样例 10.000000 思路解析 阅读全文
posted @ 2026-03-26 10:49 CodeMagicianT 阅读(2) 评论(0) 推荐(0)
摘要:2.归并排序:稳定的分治排序 当两个组数据已经有序,我们可以通过如下方式(以下简称归并大法)让两组数据快速有序 我们可以依次从两组中取最前面的那个最小元素依次有序放到新的数组中,然后再把新数组中有序的数据拷贝到原数组中,快速完成排序。 依靠这种思想,提出了如下的排序方法! 具体步骤 对于下面这一组待 阅读全文
posted @ 2026-03-25 17:33 CodeMagicianT 阅读(8) 评论(0) 推荐(0)
摘要:4.Acwing基础课第788题-简单-逆序对的数量 题目描述 给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。 输入格式 第一行包含整数 nn,表示数列的长 阅读全文
posted @ 2026-03-25 11:13 CodeMagicianT 阅读(9) 评论(0) 推荐(0)
摘要:3.Acwing基础课第787题-简单-归并排序 题目描述 给定你一个长度为 n 的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n。 第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。 输出 阅读全文
posted @ 2026-03-25 00:17 CodeMagicianT 阅读(6) 评论(0) 推荐(0)
摘要:1.快速排序 算法思想时这样的: 1.每次选取第一个数为基准数; 2.然后使用“乾坤挪移大法”将大于和小于基准的元素分别放置于基准数两边; 3.继续分别对基准数两侧未排序的数据使用分治法进行细分处理,直至整个序列有序。对于下面待排序的数组: 第一步:先选择第一个数163 为基准数,以163 为基准将 阅读全文
posted @ 2026-03-24 09:57 CodeMagicianT 阅读(12) 评论(2) 推荐(0)