C++程序设计竞赛
文章平均质量分 84
本专栏主要分4部分,第1部分介绍C++语言的基础知识,地部分介绍一些基础算法,第3部分介绍几种简单常用的数据结构,第4部分是在算法竞赛中需要使用的数学基础。
本专栏主要面向从未接触过程序设计竞赛(包括NOI系列比赛、ICPC系列比赛)的选手,以及稍有算法基础,希望进一步巩固算法基础的读者
智码行者
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
自幂数判断(详解与多种实现方法)-洛谷B3841 [GESP202306 二级]
本文介绍了判断自幂数的多种方法。自幂数指一个N位数满足各位数字的N次方和等于自身。针对输入的正整数,需先计算其位数N,再求各位数字的N次方和进行判断。文中指出直接使用pow函数可能导致整数计算错误,建议使用round函数或自定义整数幂函数。提供了四种实现方案:基础实现、函数封装、自定义幂函数和预处理幂次法,其中预处理法通过预先计算0-9的N次方来优化性能。最后还介绍了字符串处理法,将数字转为字符串便于操作。这些方法各有特点,可根据需求选择适合的实现方式。原创 2025-08-18 07:30:00 · 1415 阅读 · 0 评论 -
找素数-洛谷B3840 [GESP202306 二级]
题目要求计算区间[A,B]内的素数个数。摘要:本题考察素数判断方法,通过遍历区间内每个数x,判断其是否为素数(只能被1和自身整除)。对于小数据规模(B≤1000),可采用暴力枚举法(检查2到x-1是否存在因子)。优化方法包括:1)仅检查到sqrt(x)即可;2)使用break提前终止循环。最终统计满足条件的数个数输出即可。样例输入2-10输出4(素数2,3,5,7)。原创 2025-08-17 11:30:00 · 794 阅读 · 0 评论 -
小杨的 X 字矩阵(举一反三)-洛谷B3865 [GESP202309 二级]
摘要:本题要求构造一个X字形矩阵,奇数阶矩阵的两条对角线为"+",其余为"-"。通过观察5x5矩阵示例,发现规律:主对角线满足i=j,副对角线满足i+j=n+1。解题步骤包括:1)输入奇数n;2)双重循环遍历矩阵;3)判断每个位置是否在对角线上;4)按要求输出字符并控制换行。核心代码使用if(i==j||i+j==n+1)判断"+""-"位置。文章还列举了Z字形、空心矩形等类似问题的变形解法,并提醒注意边界条件和输出格式。原创 2025-08-16 17:18:30 · 1259 阅读 · 0 评论 -
百鸡问题-洛谷B3836 [GESP202303 二级]
本文介绍了"百鸡问题"的编程解法及其优化过程。该问题要求在给定公鸡、母鸡、小鸡价格和总钱数、总鸡数的条件下,计算可行的购买方案数量。文章首先给出暴力枚举的三重循环解法,然后逐步优化:通过缩小循环范围减少枚举次数,使用clock()函数测量运行时间,最终通过减少循环层数实现显著性能提升。核心优化思路是:1)优化循环次数范围;2)减少嵌套循环层数。文章最后给出通用解法代码,适用于任意输入参数情况,并强调在编程竞赛中优化枚举算法的重要性。原创 2025-08-16 15:33:21 · 891 阅读 · 0 评论 -
P1042【深基8,例1】乒乓球
【题目背景】国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中 11 分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白 11 分制和 21 分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。原创 2025-04-19 18:21:51 · 747 阅读 · 0 评论 -
模拟算法(一)作业分析及答案
数轴上的每个整数点,即0,1,2,……【输入】第一行有两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。【描述】 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如果华华赢了,w就增加1,否则l增加1.如果发现计分板上得分高的一方达到了赛制要求的球数,而且分差也足够,就将计分板的得分输出,同时计分板清零开始下一局。原创 2025-04-19 18:05:15 · 1108 阅读 · 0 评论 -
28——循环结构之累加应用(配套练习后续更新~~~~~)
2008年北京奥运会,Y国的运动员参与了n天的决赛项目(1≤n≤20)。现在要统计一下Y国所获得的金、银、铜牌数目及总奖牌数。输入n+1行,第1行是Y国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金、银、铜牌数目,以一个空格分开。输出仅1行,包括4个整数,为Y国所获得的金、银、铜牌总数及总奖牌数,以一个空格分开。31 0 33 1 00 3 04 4 3 11这个问题是关于统计和基本的输入输出操作。我们需要从输入中读取天数和每天获得的金、银、铜牌数目,然后计算总数并输出。原创 2024-10-20 13:39:00 · 975 阅读 · 0 评论 -
P1009 【深基4,例7】阶乘之和
为了优化这个问题,我们可以考虑使用高精度计算库(如 GMP 或 C++17 引入的 <bit> 和 <numeric> 中的工具,尽管后者主要用于位操作和数值算法,并不直接支持大数运算),但在这里,我将展示一个更简单的优化方法:使用模运算来避免溢出(尽管这不会给出精确的阶乘和,但可以用于处理大数问题时的近似或特定场景下的计算)。然而,对于直接计算阶乘和的问题,更实际的做法是使用一种算法来避免直接计算大数的阶乘,因为即使使用模运算,当 n 很大时,计算单个阶乘也会非常耗时。当n的值超过21,就会出现溢出。原创 2024-08-29 08:00:00 · 979 阅读 · 0 评论 -
P5721 【深基4.例6】数字直角三角形
4)%m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。代码中的printf函数用于格式化输出数字,其中%02d表示输出的整数至少占用两位宽度,不足部分以0填充。前边的*定义的是总的宽度,后边的定义的是输出的个数。可以把这个任务分成两个层级:大任务输出每一行,小任务输出每一行的每个数字。7)f格式:用来输出实数(包括单、双精度),以小数形式输出。9)g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。1)%-:在字段宽度中,表示左对齐输出,如省略表示右对齐输出。原创 2024-08-28 21:32:40 · 1392 阅读 · 0 评论 -
C++ 标准库 <iomanip>
虽然在这个例子中std::setiosflags与std::ios::fixed和std::ios::showpoint一起使用,但std::setiosflags实际上可以接受任何std::ios_base::fmtflags的组合,默认情况下,如果输出宽度大于要输出的数据所需的宽度,并且没有指定填充字符,则大多数实现会使用空格作为填充字符。在这个例子中,我们清除了std::ios::fixed标志,但保留了std::ios::showpoint标志。类型的参数,这些参数指定了要设置的标志。原创 2024-08-28 21:35:33 · 2995 阅读 · 0 评论 -
P5718 【深基4.例2】找最小值
另外,<bits/stdc++.h>是一个不规范的、但在竞赛编程中常见的头文件,它包含了几乎所有C++标准库中的内容,包括std::min和std::max函数。然而,由于它不是一个官方推荐的头文件,通常不建议在生产环境中使用。如果新输入的数字要小于擂主,那么新数字打擂成功,代替原来的擂主;如果没有小于擂主,那么打擂失败,新的数字只能灰溜溜地下去了。直到最后,经过历练,最后留下的擂主就是最小值。的初始值设置为读到的第一个数据,把第一个数直接作为擂主,然后和后面的数字打擂台,也可以得到相同的效果。原创 2024-08-22 17:18:53 · 530 阅读 · 0 评论 -
洛谷官方精选题单解析(持续更新~)
P1320:压缩技术(续集版)P1205:[USACO1.2]方块转换 Transformations。P1090:[NOIP2004提高组]合并果子/[USACO06NOV] Fence Repair G。P1090:[NOIP2004提高组]合并果子/[USACO06NOV] Fence Repair G。P1217:[USACO1.5]回文质数Prime Palindromes。P1217:[USACO1.5]回文质数Prime Palindromes。原创 2024-08-22 15:30:41 · 6139 阅读 · 0 评论 -
P1428 【深基5,例1】小鱼比可爱
这道题目主要考察的是数组或列表中元素的遍历和计数。原创 2024-08-20 21:16:26 · 655 阅读 · 0 评论 -
【深基4,例5】猜数字游戏
小洛机器人和你玩猜数游戏!小洛随机选择并默默记下一个1~100的整数,你需要不断猜测这个数字是什么并输入验证。如果你输入的数字比小洛选择的数字小,小洛会输出“Too small如果比小洛选择的数字大,小洛输出“TOO large如果刚好猜对,小洛输出“!!如果一次没有猜中,则继续猜,直到猜中为止。这个猜数游戏是一个经典的二分查找算法的应用实例,其中小洛机器人代表程序中的算法部分,而你代表与程序交互的用户。小洛机器人在1到100之间随机选择一个整数作为答案。用户输入一个猜测的数字。原创 2024-08-20 20:50:51 · 946 阅读 · 0 评论 -
P5720 【深基4.例4】一尺之棰
条语句,这样就可以不需要加花括号了。一次次循环后,a会越来越小,知道a变为0时,循环成立条件不再成立,跳出循环。这里循环体虽然是两个操作,但是使用了逗号表达式,将两个不同的表达式写在了一起,变成。原创 2024-08-19 18:55:32 · 327 阅读 · 0 评论 -
P5719 【深基4.例3】分类平均
如果要计算一些数字的平均数,除了要知道这些数字的总和,还要知道这些数字有几个。根据等差数列求和公式,个自然数中就有 一个是。原创 2024-08-18 20:40:54 · 379 阅读 · 0 评论 -
探寻编程之信息学奥赛:升级打怪的冒险之旅
一、信息学奥赛晋级之路信息学奥赛(简称:信奥)全称为全国青少年信息学奥林匹克竞赛(National Olympiad in Informatics,NOI)与数学,物理,化学,生物四科竞赛统称五大科竞赛。是国内包括港澳在内的省级代表队最高水平的大赛。信奥赛历史悠久,自1984年由中国计算机学会创办第一届至今,为国家培养了大批的计算机拔尖人才。信奥是教育部白名单赛事中科技类最高赛项也是现存唯一允许小学、初中、高中均可报名参加的奥赛。原创 2024-08-17 22:40:46 · 7978 阅读 · 1 评论 -
信息学奥赛有关网站整理集合
2. 复杂度速查表,提供了一个简洁明了的表格形式,列出了常见算法的时间复杂度(如 O(1),O(n),O(log n),O(n log n),O(n²),O(n³) 等)和空间复杂度。2. 预设示例,提供了一系列预设的算法示例,像常见的排序算法快速排序、归并排序、冒泡排序等,图论算法最短路径、拓扑排序、哈密顿回路查找等,还有树和图的遍历算法。2、同时也提供一些与二叉树相关的操作演示,比如插入、删除节点,遍历二叉树等,这些都有助于我们更深入地了解二叉树的运作原理。1、展示不同算法的时间复杂度、空间复杂度。原创 2024-08-17 15:24:35 · 25299 阅读 · 0 评论
分享