- 博客(18)
- 收藏
- 关注
原创 2025级计算机本科生如何选择专业?(持续更新中)
在人工智能迅猛发展、技术岗位快速迭代的2025年,计算机类本科专业的选择已不再仅仅是“学编程”那么简单。计算机科学与技术学院六大专业——从夯实系统根基的**计算机科学与技术**,到聚焦工程实践的**软件工程**;从面向智能互联的**物联网工程**,到融合艺术与技术的**数字媒体技术**;再到紧扣数据智能的**大数据技术**和守护网络空间的**网络工程**——各具特色,路径分明。然而,面对算法岗“高门槛内卷”与AI应用开发“新蓝海”并存的就业现实,如何结合自身兴趣、能力禀赋与行业趋势,做出理性而前瞻的专业选择
2025-11-23 20:28:29
737
原创 双指针算法应用指南:基于移动模式的模板选择策略(链表兼数组版)
双指针算法通过两个指针的协同移动优化遍历效率,适用于链表和数组问题。在链表中常用于环检测、中点查找和删除节点,分为快慢指针、前后指针和相向指针三种模式。数组中的双指针包括快慢指针(原地操作)、对撞指针(两端处理)和滑动窗口(子区间问题)。关键技巧包括虚拟头节点和边界处理,适用于优化时间复杂度至O(n)。
2025-11-02 15:30:00
1196
原创 前缀和算法完全指南:从一维到二维的高效求和策略
本文系统讲解了前缀和算法,从一维到二维的高效求和策略。前缀和通过预处理将区间查询的时间复杂度从O(n)优化到O(1),特别适合处理大规模数据的多次查询。文章详细介绍了前缀和的原理、实现方法及在二维网格中的应用,包括典型题目解析和代码示例。同时指出了适用场景和注意事项,并分享了空间优化、数学转换等进阶技巧。前缀和展现了算法设计中分治和预处理的核心思想,是解决静态数组区间求和问题的最优方案。
2025-11-01 17:21:31
623
原创 双指针算法应用指南:基于问题特性的模板选择策略(数组版)
双指针算法通过两种指针的协同移动实现对数组或字符串的高效处理。本文总结了三类典型双指针模式:1)快慢指针用于单数组元素保留/删除,保持顺序(如移除元素);2)对撞指针处理有序数组合并或生成新有序数组(如数组平方);3)滑动窗口解决连续子区间极值问题(如最短子数组)。每种模式有特定适用场景和指针移动策略:快慢指针区分"侦察"与"记录"角色;对撞指针从两端向中间比较;滑动窗口动态调整区间边界。关键是根据问题特性选择适当模板,通过指针单向移动保持算法效率,将O(n²)优化为
2025-11-01 17:15:53
1029
原创 Codeforces 1992C - Maximum Difference:如何排列使两个前缀和函数差值最大?
本文深入解析 Codeforces 1992C 题《Gorilla and Permutation》。题目要求构造一个排列,使得两个前缀和函数的差值最大:f(i):前 i 个数中 ≥ k 的数之和g(i):前 i 个数中 ≤ m 的数之和目标是最大化 Σf(i) - Σg(i)。我们从“先猜后证”的构造思路出发,通过调整样例观察规律,得出最优结构进一步,我们提供数学分析版本:从每个元素的“净贡献”公式入手,严格推导出该构造的正确性,适用于比赛中无法快速猜出规律时的稳解策略。
2025-10-31 21:30:00
867
原创 Codeforces 2072B: 最优排列从直觉到数学的思考
摘要:Codeforces 2072B题要求将字符串中的'-'和'_'重新排列,使得子序列"-_-"的数量最大化。核心思路是使'_'位于中间,并将'-'平均分布在两侧,以最大化每个'_'的贡献(左侧'-'数×右侧'-'数)。数学证明表明当'-'被均分时乘积最大,计算公式为under × floor(minus/2) × ceil(minus/2)。示例验证和代码实现展示了该策略的有效性,适用于构造类问题。解题关键:子序列贡献=左右乘积,平均分布最佳。
2025-10-31 21:30:00
231
原创 二分查找的易错细节问题复盘:从基础到LeetCode34、69题
本文系统剖析二分查找的核心细节与典型问题: 基础要点:强调安全计算中间值(防溢出)、严谨区间定义(左闭右闭)、循环终止条件(left=right+1) LeetCode34:通过两次二分查找边界,着重分析数组越界风险及防护方法 LeetCode69:数学推导平方根整数部分的双约束条件,指出数值溢出和条件判断的常见错误 方法论:提出"道"(循环不变量)与"术"(防溢出/越界技巧)的二分思想框架 全文用公式推导和案例分析,揭示二分查找高效性背后的严谨逻辑,帮助读者规避典型
2025-10-31 21:30:00
1251
原创 README · 这是一个每日一题板块
🌟 Codeforces 构造算法专栏简介 🌟 本专栏专注于Codeforces上的Constructive Algorithms(构造类算法)题目,这类问题要求选手构建满足特定条件的答案(如数组、序列、矩阵等),而非追求最优解。专栏特色: 内容规划: 精选800-2000+难度题目 每题含详细解析+代码实现 记录思维成长轨迹 学习价值: ✔ 锻炼创造性思维 ✔ 掌握构造题解题模式 ✔ 提升比赛中的C/D题得分能力 实用技巧: 观察小样例找规律 逆向思考与模块化构造 数学工具应用 成长路线: 从Newb
2025-10-30 23:00:53
626
原创 Codeforces 1869A - Make It Zero | 异或思维题详解
摘要:Codeforces 1869A题解是一道关于异或运算的思维题。给定一个整数数组,通过选择区间执行任意次数的异或操作,目标是将所有元素归零。核心思路是利用异或的自反性(两次相同异或抵消):当数组长度为偶数时,只需对整个数组操作两次;若为奇数,则需分段操作共4次。解题关键在于构造操作方案而非计算具体异或值。C++代码实现了这一逻辑,通过判断数组长度奇偶性输出对应操作步骤。该题体现了构造思维和位运算性质的巧妙结合。
2025-10-30 21:17:46
580
原创 Codeforces 1794B - Not Dividing | 构造思维题详解
摘要:Codeforces 1794B题要求通过最多2n次加1操作,使得数组中相邻元素不形成整除关系。解题核心思路:1) 预处理将所有1变为2;2) 从左到右遍历,若a[i+1]%a[i]==0则a[i+1]加1破坏整除性。关键点在于优先处理特殊值1和选择修改被除数而非除数,保证了操作不影响已修复部分。该解法时间复杂度O(n),属于构造思维题,适合练习贪心策略和数学性质应用。
2025-10-30 20:24:54
144
原创 Codeforces 1537B - Bad Boy | 棋盘最长路径思维题详解
这道题目要求在一个n×m的棋盘上选择两点A和B,使得从给定起点出发经过A、B后返回起点的路径总长度最大化。解题关键在于利用网格的最远点对性质:无论起点位置如何,选择棋盘的两个对角角落(如(1,1)和(n,m))总能构造出最优解。这是因为对角点之间的曼哈顿距离最大,能确保路径总长度接近理论最大值。该解法时间复杂度O(1),只需每组数据直接输出一对对角坐标即可,体现了构造题的对称性思维和贪心策略。
2025-10-30 11:07:24
226
原创 Codeforces 1927B - Following the String | 如何从定义出发“还原”一个字符串?
本文介绍了如何从给定数组 a 构造满足特定条件的字符串 s。关键在于理解 a[i] 表示字符 s[i] 前面应有多少个相同字母。通过维护 count 数组记录已使用的字母出现次数,可以高效地按字母顺序分配字符。文章通过示例逐步演示构造过程,强调从定义出发、模拟小数据和逆向思维的解题方法。最终代码只需遍历数组并动态更新计数即可输出结果。核心思维是让规律在模拟中自然浮现,而非死记技巧。
2025-10-30 11:06:55
250
原创 Codeforces 1559A - Mocha and Math | 如何用“按位与”把最大值变最小?
这道Codeforces题目(1559A)考察了位运算与贪心思维。通过分析发现,按位与操作(AND)只会减少数值,而无限次操作允许将任何元素变为整个数组的按位与结果。因此,解决方案就是计算所有元素的按位与,这个值就是操作后数组可能的最小最大值。关键在于理解操作的本质和位运算的特性,而非被复杂的操作描述迷惑。最终代码仅需10行,核心是计算数组元素的累计按位与。 关键词:位运算、按位与、贪心算法、思维题、构造解法
2025-10-29 21:39:16
158
原创 Codeforces 1335B - Construct the String:构造含指定不同字符的子串
本文介绍了Codeforces 1335B题的构造解法,要求构建一个长度为n的字符串,使得每个长度为a的子串都恰好包含b个不同字符。解题思路是循环使用前b个小写字母('a'到'a'+b-1),确保每个a长度的窗口都能完整覆盖这b个字符。文章提供了示例验证、C++代码实现和复杂度分析,指出这是一个典型的构造思维题,关键在于利用取模运算实现字符循环。该方法简洁高效,时间复杂度O(n),适用于算法竞赛初学者。
2025-10-29 20:32:01
134
原创 CF 800 难度数学思维概览(含简化版题目若干)
Codeforces 800 分的题目,根本不需要你写复杂代码——它们像数学谜题,三行逻辑就能解开。没有指针,没有状态压缩,没有精度陷阱,只有清晰的思维快感。 给算法苦手:这里没有“必须会的模板”,只有“啊,原来可以这样想!”给思维倦怠者:5 分钟一道题,像解数独一样清爽。给想找回乐趣的人:重新体验“灵光一闪”的快乐——原来编程也可以很轻盈。
2025-10-28 20:52:55
1550
原创 Codeforces 1343B - Balanced Array:构造前后和相等的奇偶分段数组
摘要:Codeforces 1343B要求构造长度为n的平衡数组,前n/2为偶数,后n/2为奇数,且两部分和相等。关键在于发现n必须能被4整除才有解,否则输出NO。构造思路:前半用最小连续偶数,后半用最小连续奇数(少一个)并调整最后一个奇数补足差值。例如n=8时输出[2,4,6,8,1,3,5,11]。代码使用vector动态数组,注意输出格式。解决构造题的核心是"先近似满足,再微调修正"。 (字数:148)
2025-10-28 19:23:27
402
原创 Codeforces 148A - Insomnia Cure | 容斥原理与暴力模拟的双视角解析
题目要求计算1到d中能被k、l、m或n整除的整数个数。提供两种解法:1)容斥原理结合最小公倍数(LCM),通过数学公式计算各集合的交并关系;2)暴力模拟法,标记所有满足条件的数后统计。第一种方法适合理论分析和大数据范围,第二种方法简单直观,推荐新手使用。注意处理边界情况(如除数为1时直接返回d)。两种方法均可有效解决问题,选择取决于具体需求和编程熟练度。
2025-10-27 22:51:22
732
原创 Codeforces Problem 266B:离散事件仿真技巧
摘要:本文探讨离散事件仿真中的同步交换问题,以"B-G位置交换"为例说明常见错误(边遍历边交换)及其影响。提出两种正确实现方案:1)临时数组法(创建副本判断后更新),2)交换标记法(先标记后交换),强调原子性操作原则。通过测试案例验证方案正确性,总结不同方法的优缺点及适用场景,指出离散事件仿真的核心在于基于当前状态同步更新而非实时修改。
2025-10-27 22:36:46
154
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅