自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从XCPC转后端开发——Java语法篇(三)

通过前三篇文章的讲解,你已经可以完成力扣中大多数算法题的 Java 代码了,反复使用即可熟练上手~

2026-10-13 19:14:21 119

原创 从XCPC转后端开发——Java语法篇(二)

在上期文章中,我们了解了Java的基本语句,输入输出,数组等内容,在今天的文章中,我们来学习一下Java的容器~

2026-10-09 12:15:17 161

原创 从XCPC转后端开发——Java语法篇(一)

left++;return ans;// 6接下来,我们将学习Java中是如何使用C++中STL的各项功能的,欢迎大家关注~欢迎批评指正,转载请注明出处。

2026-10-08 11:35:43 192

原创 CCFCSP算法专栏——背包问题

dp[i][j]只考虑前i件物品,背包容量为j时,能获得的最大价值。每件物品做一次"选或不选"的决策,用DP记录每个容量下的最优解;一维优化时逆序遍历容量,保证物品不被重复使用。完全背包是动态规划中非常经典的一类问题。下面从定义、思路、代码到优化完整讲一遍。要点内容状态dp[j]:容量j下的最大价值转移遍历容量正序对比 0-10-1 背包容量逆序本质允许同一物品重复选,所以用本行已更新的状态完全背包 = 0-1 背包把容量循环反过来写。

2026-09-11 14:49:24 215

原创 CCFCSP算法专栏:关于二分

left = mid + 1 # mid 可能是答案,但先往右探else:return left - 1 # 注意减 1为什么 return left - 1?因为这里的left是“第一个 > target 的位置”,所以最后一个 <= target 的位置是left - 1。场景区间循环条件更新方式返回值精确查找[l, r]l <= rl=mid+1r=mid-1循环内 return mid,否则 -1左边界(第一个 >= target)[l, r)l < rl=mid+1。

2026-09-11 13:59:35 229

原创 CSP202312C.树上搜索

本题核心在于理解二分提问的决策过程,并高效维护动态变化的候选集合及其子树权重和。通过 DFS 序快速判断祖先关系,利用父指针链更新权重,避免了重复计算,使得单次查询的复杂度可以接受。代码实现时需注意数据范围使用long long防止溢出,以及并列时选择编号较小的类别。

2026-09-05 20:37:05 256

原创 CSP202309C.梯度求解

本题本质上是后缀表达式求值与自动微分的结合。通过在栈中同时维护表达式的值和关于目标变量的偏导数,可以在一次遍历中完成求值与求导。利用模运算保证结果在给定范围内,并注意处理负数取模问题。该方法简洁高效,能够轻松应对题目给出的数据范围。

2026-09-04 18:31:42 223

原创 CSP202305C.解压缩

本题主要考察对二进制格式的解析能力。关键在于正确理解压缩格式的位级编码规则,尤其是导引域的变长整数、字面量长度的扩展方式以及两种回溯引用中偏移量和长度的位分布。实现时注意使用避免符号扩展,并按小端序读取多字节数值。回溯引用在o < l时需要对偏移取模循环输出,确保正确复制重叠区域。整体逻辑清晰,按规则逐步解析即可。

2026-09-03 20:33:51 192

原创 CSP202303C.LDAP

本题是一道典型的表达式解析 + 集合运算问题。属性映射与索引:由于属性编号范围大且稀疏,使用哈希表映射到连续内部 ID 以便高效存储。有序列表维护:预排序用户 DN 列表,使得后续交集、并集、差集操作只需线性时间完成。递归解析表达式:基于 BNF 语法构建表达式树,使用节点池而非指针简化内存管理。结果缓存:对原子表达式结果进行缓存,避免重复计算,提升效率。通过以上设计,算法能够在大数据范围内高效运行,并保持代码清晰易读。

2026-09-02 20:47:44 386

原创 CSP202212C.JPEG解码

本题主要考察对模拟过程的细致实现,需要注意 Z 字形填充的顺序、IDCT 公式的准确计算以及边界处理。由于数据量小,直接暴力计算即可。C++ 中需包含<cmath>以使用 cos、round 和 acos。

2026-09-01 20:30:50 169

原创 CSP202209C.防疫大数据

准确理解题意:特别是"持续风险"的条件,要求地区从访问日到生成名单日期间每天都是风险地区时间窗口控制:只关注最近 7 天的数据,可以用滑动窗口优化数据结构选择:使用 unordered_set 快速查找,set 自动排序边界处理:注意日期可能为负数,以及下标越界问题这道题虽然逻辑不复杂,但细节较多,需要仔细处理各种时间窗口和数据延迟的情况。

2026-08-31 19:53:21 237

原创 CSP202206C.角色授权

数据结构设计:合理使用哈希表()存储和查找数据逻辑判断:准确理解并实现三层判断逻辑(用户→角色→权限)边界处理:正确处理通配符、空清单、去重等特殊情况性能优化:使用哈希表保证查询效率,避免超时关键是要理清判断的层次关系:先确定用户关联的所有角色,再逐个检查这些角色的权限是否覆盖当前操作。使用哈希表能够高效地处理大量查询。

2026-08-30 20:32:27 198

原创 CSP202203C.计算资源调度器

正确理解并实现三种约束条件的过滤逻辑处理"尽量满足"的反亲和性约束合理使用数据结构优化查询效率注意边界条件和状态更新的时机通过这道题可以加深对哈希表、贪心算法和模拟类问题的理解和应用能力。

2026-08-29 18:13:28 204

原创 CSP202112C.登机牌条码

模式切换是易错点数字→大写用 28(不是30)小写→大写必须经过数字模式,所以是 28 28大写→小写用 27填充码字的计算:要确保总码字数(包括校验码)能被 w 整除多项式运算所有运算在模 929 下进行注意负数的处理,需要加 929 再取模校验码输出顺序是从高次到低次边界情况s = -1时不需要计算校验码输入字符串可能很长,但保证编码后的码字总数小于 929。

2026-08-28 20:20:12 229

原创 CSP202109C.脉冲神经网络

核心优化:紧凑邻接表 + 循环缓冲区 + 数组扁平化存储,避免了 vector 的动态开销和链表遍历的缓存不友好。越界处理:动态计算,避免固定大小数组在 D 较大时引发段错误。时间复杂度:O(T × (N + P + S)),最坏约 3×10^8 次简单操作,常数较小,可在时限内运行。注意顺序:每个时间步内必须先处理脉冲源,再处理神经元;脉冲的延迟到达通过放入相应槽位。内存管理:所有动态数组在程序结束时释放,避免内存泄漏。

2026-08-27 22:26:14 319

原创 CSP202104C.DHCP服务器

今天我们来看CSP202104C.DHCP服务器这道题目。

2026-08-26 20:35:57 186

原创 CSP202104B.邻域均值

定义表示从矩阵左上角 (0,0) 到 (i-1,j-1) 的矩形区域内所有元素的和。这样定义多开一行一列是为了方便处理边界情况。二维前缀和是解决矩形区域求和问题的经典技巧,能将 O(r²) 的查询优化到 O(1)。使用long long类型存储前缀和,避免数据溢出。用乘法代替除法进行平均值比较,避免浮点数精度问题。注意边界处理,邻域范围不能超出图像边界。

2026-08-25 20:13:41 231

原创 CSP202109B.非零段划分

今天我们来看CSP202109B.非零段划分这道题目。

2026-08-24 20:41:58 198

原创 CSP202112.B序列查询新解

本题的关键在于识别出f(x)和g(x)都是阶梯函数,通过合并两个函数的分段点,在每个小区间内误差值保持不变,从而避免遍历所有 x。这种"分段处理"的思想在算法竞赛中经常用到。

2026-08-23 20:24:30 201

原创 CSP202209.B何以包邮?

本题是经典的 0-1 背包问题变体,通过动态规划可以高效求解。正确理解 0-1 背包的状态转移掌握从大到小遍历的技巧学会从 x 开始查找满足条件的最小值这种方法时间复杂度为 O(n×sum),在给定数据范围内可以高效运行。

2026-08-22 20:47:26 161

原创 CSP202203.B出行计划

今天我们来看CSP202203.B出行计划这道题目。

2026-08-21 20:16:07 332

原创 CSP202212B.训练计划

今天我们来看CSP202212B.训练计划这道题目。

2026-08-20 20:32:22 206

原创 CSP202303B.垦田计划

本题的关键在于发现问题的单调性,从而使用二分查找来求解。二分查找是一种非常高效的算法,特别适用于"在有序区间内寻找满足条件的极值"这类问题。在实现时需要注意使用 long long 类型避免整数溢出,以及通过提前退出优化计算过程。

2026-08-19 21:49:06 174

原创 CSP202309B.坐标变化(其二)

本题的核心在于发现均匀拉伸与旋转的可交换性,将复杂的2×22 \times 22×2矩阵乘法问题转化为一维前缀和与一维前缀积问题,实现了OnmO(n+m)Onm的最优复杂度。Tij∏tijkt⋅R∑tijθtTij​ti∏j​kt​⋅Rti∑j​θt​这个技巧在处理同时包含标量变换和旋转变换的问题时非常有用。

2026-08-18 21:23:32 151

原创 哈希映射——CSP202206B. 寻宝!大冒险!

每个候选位置检查 (S+1)×(S+1)(S+1)×(S+1) 个格子,最大为 51×51≈260151×51≈2601。我们有一个很大的绿化图 AA(大小 (L+1)×(L+1)(L+1)×(L+1)),但是不会全部给出,只会给出其中。对于 BB 中每个为 1 的位置 (i, j),检查 A[x+i][y+j]A[x+i][y+j] 是否有树。还有一个小的藏宝图 BB(大小 (S+1)×(S+1)(S+1)×(S+1)),里面标记了树的位置。B[0][0]=1B[0][0]=1,即左下角一定有树。

2026-08-17 22:14:11 169

原创 矩阵乘法——CSP202305B. 矩阵运算

各位好,今天我们来看CSP202305B. 矩阵运算 这道题目。

2026-08-16 22:58:22 157

原创 质因子分解——CSP202312B. 因子化简

各位好,今天我们来看CSP202312B. 因子化简这道题目。

2026-08-15 22:48:49 236

原创 模拟题10——CSP202605C. 死锁优化

这道题的难点不在于数据规模,而在于还原题目规定的精确时间线。段首统一申请资源→ 处理 A/B/C 类特殊规则→ 段中按照最新资源归属计算收益→ 段末完成任务并释放资源→ 判断是否全部完成或永久死锁几个最关键的细节是:B 类在第w次失败的当前段就开始运行并获得收益;C 类在连续失败w次后的下一段才强制抢夺;多个 C 类同时强制抢夺时,编号最大的进程获得资源,但其他强制抢夺者也会运行;被 C 类抢走资源的进程不会停止任务,只是持有资源数减少;A 类在第w次失败所在段的段末释放资源;

2026-08-04 21:46:29 309

原创 模拟题9——CSP202603C. 进程通信

这道题的重点并不是模拟每个内存地址,而是进行抽象。虽然内存容量为,但真正需要维护的只有:每个队列占用的连续区间;每个进程当前拥有的队列;每个队列下一次写入的位置。使用map维护所有已占用区间,可以按照地址顺序扫描空闲段,从而实现最优适应内存分配。使用vector保存每个进程的接口,可以自然处理接口的建立、遍历和删除后的重新编号。每个队列只需要记录下一次写入位置,就可以实现循环写入,不需要保存每个内存地址是否已经存有对象。// 一个接口对应一个队列// 队列起始地址// 队列长度。

2026-08-03 22:59:58 156

原创 模拟题8——CSP202512C. 图片解码

本题的主要思路可以概括为以下几点:加密操作必须按照相反顺序撤销;翻转操作本身就是自己的逆操作;旋转加密需要先撤销整图旋转,再撤销局部旋转;整张图片的旋转不能直接模拟,而要使用方向变量进行懒处理;所有局部操作通过逻辑坐标到实际坐标的转换完成;最后根据?的位置恢复原图片的行数和列数。int type;int Z;// direction 表示逻辑图片相对底层矩阵// 顺时针旋转了多少个 90 度// 将逻辑坐标转换为底层矩阵中的实际坐标// 读取逻辑位置上的字符。

2026-08-02 22:08:31 236

原创 模拟题7——CSP202509C. HTTP 头信息

本题是一道综合模拟题,主要考查了递归建树、Huffman 解码、字符串处理和动态表维护。完整流程可以总结为:使用递归,根据前序字符串恢复 Huffman 树;判断字符串属于普通字符串、HH转义字符串还是 Huffman 编码字符串;将 Huffman 十六进制数据转换成二进制位;去掉末尾补零,在 Huffman 树上逐位移动;使用静态表和动态表统一处理编号;根据指令类型决定是否将结果插入动态表;按照key: value的格式输出答案。

2026-08-01 21:50:21 232

原创 模拟题6——CSP202506C 消息解码

这道题表面上是一道较长的模拟题,实际可以分解成四个相对独立的部分:二进制字段提取;普通 38 进制代号解码;典型代号的混合进制解码;使用哈希表维护散列值最近对应的直接代号。其中最容易出错的地方有:短数字表示需要先减去 (2^{25});散列值乘法必须使用;散列值推断只能使用以前直接出现过的代号;当前消息中的代号不能用于推断当前消息;同一条消息双方都匹配时,发送方的优先级更高;推断出来的代号前需要添加;无法推断时输出###;更新历史时应当先更新接收方,再更新发送方。

2026-07-31 21:59:13 388

原创 模拟题5——CSP202503C. 模板展开

这道题的难点不是字符串拼接,而是区分直接赋值和间接赋值。题目只询问字符串长度,因此不需要保存真正的字符串;直接赋值立即计算长度,之后不再依赖原表达式中的变量;间接赋值保存表达式,每次使用变量时重新计算;表达式可以拆成普通字符串总长度和依赖变量列表;使用 DFS 递归计算间接变量;使用时间戳记忆化,避免同一次求值中重复计算;每次新的求值都增加时间戳,防止使用已经过期的缓存;直接赋值时必须先计算右侧表达式,再覆盖左侧变量。

2026-07-30 22:15:57 312

原创 模拟题4——CSP202412C. 缓存模拟

这道题需要同时模拟三件事:根据确定内存块所属的缓存组;使用哈希表快速判断内存块是否已经在缓存中;使用双向链表维护每个组的 LRU 顺序。内存块编号 → 缓存行编号队头是最近使用,队尾是最久未使用处理指令时:命中:写操作标脏,并移动到队头;未命中且组未满:读取新块并插入队头;未命中且组已满:替换队尾,脏块先写回,再读取新块。

2026-07-29 21:54:08 309

原创 模拟题3——CSP202409C. 补丁应用

这道题表面上是一道字符串模拟题,真正的难点是维护补丁块的位置含义。实现时最重要的原则是:所有补丁块都在最初输入的原文件中定位;匹配阶段不修改原文件;所有位置确定后再统一生成最终结果。删除注释→ 划分补丁块→ 检查块头→ 提取新旧片段→ 检查块顺序→ 枚举偏移并匹配原文件→ 传递偏移→ 统一输出就能比较清晰地完成整个patch模拟过程。转载注明出处。

2026-07-28 22:41:12 321

原创 模拟题2——CSP202406C. 文本分词

各位好,今天我们继续来看CCF-CSP的模拟题,

2026-07-27 22:12:31 223

原创 模拟题1——CSP202403C. 化学方程式配平

最后在主函数中,我们建立元素到矩阵行索引的映射后,对于第 j 个物质,将其包含的各元素原子数填入系数矩阵的第 j 列对应行中。具体怎样操作呢,我们遍历化学式字符串,交替读取元素名(连续小写字母)和随后的数字。而对于元素含量,我们实际是要实现对‘O’,‘Au’之类的string与其含量int匹配,因此这里我们需要维护一个。考察当前子矩阵的第一列:若全为零,则去掉该列,对剩余子矩阵重复判断;若不全为零,检查第一行第一列元素:若为零,则与后面某行交换使其非零;消元完成后,统计不全为零的行数,即为系数矩阵的秩。

2026-07-26 21:42:36 228

原创 二分:CSP202605B. 机器人宿管指南

首先,我们想这样一个问题:假设现在有x个机器人(x已经给定),根据题目中给出的变质规律,通过模拟,我们可以判断出这些苹果能否撑过m天,这个过程的时间复杂度为O(m)而根据题意,我们不难看出:机器人数量越多,苹果能撑过的时间就越短。这是一个单调的函数规律。由于题目保证答案不超过 10⁹,我们将二分区间初始化为。为假,说明机器人太多了,需要减少,令。中存储的就是最大的可行机器人数量。是一个可行解,答案至少为。,因此尝试更大的值,令。大家好,今天我们来看。

2026-07-24 17:18:00 319

原创 混合背包DP——CSP202603B. 机器人项目管理

灵活型任务可以连续取值,每多给一杯咖啡就多节省 时间,不存在"浪费",所以按效率从高到低依次分配就是最优解,这是经典的分数背包问题。我们发现此时将4杯咖啡都选给效率略低的任务B才是更优的,也就是说我们不能通过贪心获得全局最优解,考虑DP。:可喝任意实数杯咖啡(0 到 ai),缩短耗时与杯数成正比,每杯效率为 bi/ai。表示:消耗 j 杯咖啡时,普通型任务最多能节省 dp[j] 的时间。的情形是一样的,所以对待普通型,我们需要使用01背包获得最优解。任务B:需要 4 杯咖啡,节省 6 小时(效率 1.5)

2026-07-23 21:38:20 242

原创 CSP202512B. 数字变换

有一个 9 位二进制数 x(0 ≤ x ≤ 511),将其分为三段 3 位二进制数 a₁, b₁, c₁。本题的关键在于观察到数据范围很小——x 和 a[i] 都在 [0, 511] 范围内,仅有 512 种可能。:对于每个可能的 x(0 到 511),执行题目定义的变换函数 g(x):将变换结果作为键(key),原始 x 作为值(value),存入哈希表。现已知 n 个经过上述变换得到的结果,请反推出原来的 x。:对于每个输入的 a[i],直接从映射表中查找对应的 x。

2026-07-22 16:13:32 157

空空如也

空空如也

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

TA关注的人

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