OneCoder

【CSP】CSP-J 2022真题 | 解密 luogu-P8814 (适合GESP四级及以上考生练习)

CSP-J 2022真题-解密,是一道结合数学推导与数值运算的经典题目。本题可以通过将方程组转化为一元二次方程,利用求根公式在 $O(1)$ 的时间内求解;也可以利用单调性通过二分法进行求解。适合 GESP 四级及以上考生练习,难度⭐⭐,洛谷难度等级普及-。 P8814 [CSP-J 2022] 解密 题目要求 题目描述 给定一个正整数 $k$,有 $k$ 次询问,每次给定三个正...

【信奥业余科普】C++ 的奇妙之旅 | 26:高效的键值对——映射(map)与多重映射(multimap)

上一篇文章我们介绍了 set 和 multiset,它们通过底层的红黑树实现自动去重、自动排序,以及在 $O(\log n)$ 时间内进行查找的机制。 但是,set 只能存放单一的元素(也就是 键 Key)。在很多实际的信奥问题或开发场景中,我们需要的是一种“对应关系”。例如: 给你一个学生的名字(Key),你需要快速查出他的信奥成绩(Value); 给你一个英文单词(Key)...

【CSP】CSP-J 2022真题 | 乘方 luogu-P8813 (适合GESP二级及以上考生练习)

CSP-J 2022真题-乘方,是一道基础模拟与数值溢出处理的考点。重点考察如何在指数运算中安全地进行溢出判断,以及如何针对特殊边界(如 $a=1$)进行优化以避免超时。适合GESP二级及以上考生练习,难度⭐,洛谷难度等级入门。 P8813 [CSP-J 2022] 乘方 题目要求 题目背景 为模拟赛时得分情况,本题时限降低 50%。 题目描述 小文同学刚刚接触了信息学竞赛,...

【信奥业余科普】C++ 的奇妙之旅 | 25:自动排序的利器——集合(set)与多重集合(multiset)

上一篇文章我们拆解了 deque 双端队列,并以此告别了“序列容器”的世界。在之前的文章中,无论是 vector、stack、queue 还是 deque,元素都是按照我们 插入的顺序 排列的。如果想要查找某个元素是否存在,在没有排序的情况下,我们只能从头到尾挨个找,时间复杂度是 $O(n)$。 如果我们需要一个容器,能 自动帮我们去重、排序,并且在 极短的时间内(比如 $O(\log n...

【CSP】CSP-J 2019真题 | 纪念品 luogu-P5662 (适合GESP六级及以上考生练习)

CSP-J 2019真题-纪念品,完全背包动态规划考点,重点考察如何将看似复杂的“跨天交易与长期持有”问题,优雅地拆解为每日独立的“当日买入、明日卖出”的完全背包问题。适合GESP六级及以上考生练习,难度⭐⭐⭐☆,洛谷难度等级普及+/提高。 P5662 [CSP-J 2019] 纪念品 题目要求 题目描述 小伟突然获得一种超能力,他知道未来 $T$ 天 $N$ 种纪念品每天的价格...

【信奥业余科普】C++ 的奇妙之旅 | 24:拆解 deque——分段连续的双端队列

上一篇文章介绍了 stack 和 queue,它们本质上是容器适配器,底层默认使用的容器就是 deque。我们提到 deque 能同时做到头尾操作 $O(1)$ 和下标随机访问 $O(1)$,比 vector 灵活得多。 这篇文章就来拆解 deque 的内部结构,看看它是怎么做到这些的。 往期回顾: 第一部分【计算机历史】系列文章合集(共8篇) 第二部分【C++的奇妙之旅...

【信奥业余科普】C++ 的奇妙之旅 | 23:主动限制的艺术——栈(stack)与队列(queue)

上一篇文章我们介绍了 vector 动态数组。vector 支持末尾追加、下标随机访问、中间插入删除等操作,功能非常灵活。 既然 vector 已经足够通用,为什么 STL 中还要专门提供 stack(栈)和 queue(队列)? 这就引出了软件工程中一个重要的设计思想:主动限制权限。在”撤销操作”或”排队处理”等场景中,过于自由的接口反而容易导致数据被意外修改。如果从接口层面关闭随机访...

【CSP】CSP-J 2021真题 | 网络连接 luogu-P7911 (适合GESP四-五级及以上考生练习)

CSP-J 2021真题-网络连接,字符串解析与模拟考点,重点考察对字符串格式校验(IP地址与端口号的合法性判断)以及利用map进行地址映射的能力,适合GESP四-五级及以上考生练习,难度⭐⭐⭐,洛谷难度等级普及/提高−。 P7911 [CSP-J 2021] 网络连接 题目要求 题目描述 TCP/IP 协议是网络通信领域的一项重要协议。今天你的任务,就是尝试利用这个协议,还原一...

【信奥业余科普】C++ 的奇妙之旅 | 22:深入 vector——动态数组的使用与底层细节

上一篇文章介绍了 STL 的整体设计思想——容器、迭代器、算法三层架构。从本篇开始,我们将逐一深入 STL 中最常用的容器。 第一个要详细展开的,自然是 vector——信奥中使用频率最高的容器,没有之一。 往期回顾: 第一部分【计算机历史】系列文章合集(共8篇) 第二部分【C++的奇妙之旅】前21篇合集 一、 vector 是什么? vector 是 STL ...