信奥赛算法基础 CSP-J入门级
文章平均质量分 83
系统讲解基础算法与数据结构的 原理,并给出相应 代码模板。
信奥源老师
信息学奥赛教练,15年信奥教学经验,带出多名CSP-J/S第二轮一等奖、NOIP一等奖学生。信息技术学科带头人,《计算机程序设计》、《全国信息学奥林匹克竞赛考试大纲》研究员,可推荐首次报考GESP等级考试推荐跳级1-5级可选,可私信联系我
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CSP-J 2025 第二轮 T3 异或和 / xor 详细解析
题目要求找出序列中最多不相交的子区间,使得每个子区间的异或和等于给定值k。通过动态规划优化,使用前缀异或和将时间复杂度从O(n³)降至O(n)。关键思路是维护一个哈希表记录前缀异或和的出现位置,从而快速判断是否存在满足条件的子区间。初始版本仅能处理小数据,优化后适用于n≤5×10⁵的大规模输入。样例1、2、3分别演示了k=2,3,0时的最优解情况。原创 2025-11-07 19:56:10 · 959 阅读 · 0 评论 -
2000-2024CSP-J历年第二轮真题考点分析归纳(按年份)
【代码】2000-2024CSP-J历年第二轮真题考点分析归纳(按年份)原创 2025-07-11 15:47:15 · 1204 阅读 · 0 评论 -
2000-2024CSP-J历年第二轮真题考点分析归纳
0.2+机试。原创 2025-07-11 15:14:07 · 1485 阅读 · 0 评论 -
洛谷P3662 [USACO17FEB] Why Did the Cow Cross the Road II S-队列
摘要:题目要求计算最少需要修复的信号灯数量,使得存在至少K个连续的信号灯正常工作。使用滑动窗口技术,首先标记坏灯位置,然后通过维护一个长度为K的窗口,统计每个窗口内的坏灯数量并追踪最小值。时间复杂度O(N),空间复杂度O(N)。例如输入10个灯中5个损坏,要求6个连续正常灯时,至少需要修复1个灯。原创 2025-07-09 17:47:35 · 673 阅读 · 0 评论 -
洛谷P1886 滑动窗口 /【模板】单调队列-队列
摘要:题目要求计算滑动窗口中的最小值和最大值。给定长度为n的序列和大小为k的窗口,窗口从左向右滑动时,需高效输出每个窗口的最小值和最大值。使用单调队列优化:维护单调递增队列求最小值,单调递减队列求最大值。每个元素最多入队和出队一次,时间复杂度O(n),适用于大规模数据(n≤1e6)。C++实现通过双端队列分别处理最小值与最大值,确保高效求解。原创 2025-07-09 16:24:23 · 881 阅读 · 0 评论 -
洛谷P2952 [USACO09OPEN] Cow Line S-队列
题目摘要: 模拟N头奶牛的排队过程,支持四种操作:从左侧/右侧加入奶牛,或从左侧/右侧移除K头奶牛。使用双端队列高效处理插入和删除操作,最终输出剩余奶牛的编号序列。例如输入10条指令后,输出队列中的奶牛编号为7、2、5、6、8(每行一个编号)。 核心思路: 使用双端队列(deque)维护奶牛编号 按指令执行头尾插入/删除操作 输出时遍历队列即可得到正确顺序 代码关键: push_front/push_back处理加入 pop_front/pop_back处理移除 时间复杂度O(S),空间复杂度O(N)原创 2025-07-09 14:07:41 · 1190 阅读 · 0 评论 -
洛谷 P5661 [CSP-J2019] 公交换乘-队列
这道题目模拟了公交优惠票的使用规则,要求计算总乘车花费。主要思路是: 地铁乘车时支付全价并获得一张优惠票存入队列 公交乘车时优先使用最早获得的、有效期内且票价足够的优惠票 优惠票有效期为45分钟,使用时需检查时间差 使用队列管理优惠票,保持先进先出顺序 解题关键点: 每次公交乘车前清理过期优惠票(队头开始检查) 遍历有效票队列寻找第一张可用票(最多46张票) 用临时队列重组未使用的票,保持时间顺序 无可用优惠票时支付全价 时间复杂度为O(46×n),因有效期限制队列长度不超过46,空间复杂度O(n)。通过队原创 2025-07-06 14:50:17 · 677 阅读 · 0 评论 -
洛谷P1540 [NOIP 2010 提高组] 机器翻译-队列
本文介绍了NOIP2010提高组的机器翻译题目,要求模拟翻译软件的缓存管理机制。题目给出内存容量M和文章单词数N,计算翻译过程中需要查词典的次数。核心算法是维护一个固定大小的先进先出队列,当新单词不在内存时,若内存已满则移除最早单词,将新单词加入内存并增加查词计数。提供了两种实现方案:STL队列版本代码简洁,数组模拟循环队列版本效率更高。两种方案均使用标记数组快速判断单词是否在内存中,时间复杂度为O(N)。示例输入输出展示了具体执行过程,对于M=3,N=7的测试用例,正确输出查词次数为5次。原创 2025-07-06 14:36:06 · 785 阅读 · 0 评论 -
洛谷P1996 约瑟夫问题-队列
本文介绍了解决约瑟夫问题的三种方法。该问题要求n个人围成一圈,从第1人开始报数,数到m的人出圈,直到所有人出圈,输出出圈顺序。 三种实现方法: 模拟法:用数组标记出圈状态,循环查找第m个未出圈的人,时间复杂度O(n*m) 链表法:用list模拟循环链表,迭代器遍历删除节点,处理循环边界 队列法:将未出圈者重新入队,数到m时出队,实现循环报数 三种方法均能正确解决问题,时间复杂度相同但实现方式不同。数组法适合小规模数据,链表法适合频繁删除,队列法代码最简洁。根据具体场景选择适当方法即可。原创 2025-07-06 11:31:53 · 1036 阅读 · 0 评论 -
考前避坑!CSP-J/S 第二轮认证防“爆零”指南
很多同学读懂题目后,发现题目流程比较简单,就大喜过望,立马写完了程序,通过几组数据之后就搞定了,其实有时候,最简单的方法忽略了很多优化,时间复杂度是不过关的。1、检查程序正确性。比如“字符串编辑器”这道题,只要用数组模拟一下题目中的5种操作,就能很轻松的写出程序,并且拿到很高的分数,甚至有同学通过暴力拿到了95分。很多同学想到的做法通过样例之后就满足了,但是事实上是错的,比如去年有一道“三国演义”,有同学直接计算三个国家的兵力和就算出答案,虽然可以过样例,但是自己设计几组不太平衡的数据就能发现错误很严重。原创 2024-10-24 18:09:17 · 2231 阅读 · 0 评论 -
CSP-J 2024复赛赛前冲刺必刷题
对于冲刺CSP-J一等奖的选手,除了巩固编程能力,做到基础题(前两题)不失分以外,还要尽量拿到较难题的部分分,由于CSP真题有很好的区分度,设计了各个阶段的部分分做法,因此建议大家通过真题练习部分分技巧。真题·基础篇 → 真题·进阶篇(练习部分分) → 真题·挑战篇(练习部分分) → 练习题·基础篇 → 真题·进阶篇(练习满分);真题·进阶篇 → 真题·挑战篇(练习部分分) → 练习题·进阶篇 → 真题·挑战篇(练习满分) → 练习题·拓展篇。CSP-J 2024赛前题单-基础篇。原创 2024-10-24 17:55:26 · 842 阅读 · 0 评论 -
《算法训练营》NOI大纲详解与实战训练轻松掌握算法
算法入门全攻略:NOI大纲详解与实战训练,一本让你轻松掌握算法的书籍原创 2024-10-24 17:47:01 · 1577 阅读 · 0 评论 -
2024年CSP-J第一轮认证试题解析
用 dp[i] 表示走到第i级台阶的最小花费,考虑最后一步即第i级台阶,有可能是一步跨一个台阶到第i级台阶,那么 dp[i] = dp[i - 1] + cost[i - 1],也有可能是一步跨两个台阶到第 i 级台阶,那么有 dp[i] = dp[i - 2] + cost[i - 1],所以得到状态转移方程:dp[i] = min(dp[i - 1], dp[i - 2]) + cost[i - 1]。注意 C++ 语言中,= 为赋值运算符,== 为判断相等的关系运算符,应选择 D 选项。原创 2024-10-10 17:21:21 · 2778 阅读 · 0 评论 -
CSP-J入门组题单
usaco17jan 美国 Cow Dance Show S P3611 绿。usaco2007nov 美国 Sunscreen G P2887 绿。noip2004 提高 合并果子 P1090 黄,P6033 绿。noip2004 提高 合并果子 P1090 黄,P6033 绿。noip2009 提高 Hankson 的趣味题 P1072 绿。noip2009 提高 Hankson 的趣味题 P1072 绿。洛谷题目难度从低到高是:红 橙 黄 绿 蓝 紫 黑。原创 2024-06-26 16:53:26 · 1080 阅读 · 0 评论 -
信息学奥赛一本通题目解析:1258:【例9.2】数字金字塔
在这个问题中,已知的信息是金字塔的底部,未知的信息是到达顶部的路径和。如果我们从顶部开始计算,就需要考虑所有可能的路径,这会导致大量的重复计算和更高的时间复杂度。然后,我们从金字塔的底部开始向上计算,每一步我们都保留到达该位置的最大路径和。在开始时存储了金字塔该位置上的数字,但在动态规划的过程中,它被更新为从该位置到底部的最大路径和。在上面的样例中,从1313到88到2626到1515到2424的路径产生了最大的和8686。就存储了从金字塔顶部到底部的最大路径和。单独的一行,包含那个可能得到的最大的和。原创 2024-03-06 14:34:27 · 1103 阅读 · 0 评论
分享