- 博客(46)
- 资源 (2)
- 收藏
- 关注
原创 详解STL容器之——vector
本文全面介绍了C++标准模板库中的vector容器。vector作为动态数组,具有自动扩容、内存管理、丰富接口和安全访问等优势。文章详细讲解了vector的基本操作(初始化、访问、增删元素)、遍历方式(下标、迭代器、范围循环)、常用算法(排序、查找、统计)以及高级用法(存储自定义类型、二维vector)。特别强调了性能优化技巧,如预分配容量和使用emplace_back。最后通过图书管理系统案例展示vector的实际应用,并总结了使用注意事项(迭代器失效、性能考量)和替代容器选择。掌握vector是高效使用
2025-10-03 03:19:32
1019
原创 数位之和-B4036 [GESP202409 二级]
摘要 本文介绍了判断"美丽数字"的问题:当一个正整数的各位数字之和能被7整除时即为美丽数字。程序需要处理n个正整数并输出判断结果。文章分析了数位处理问题的通用解法,包括分解数字各位的方法(%10和/10操作),并给出了暴力解法的C++实现。此外,还扩展了三个相关数位处理问题:统计奇偶位数差、判断回文数、统计相邻数字递增对。这些问题的核心解法都涉及分解数字各位并进行特定计算,展现了数位处理问题的相通性。
2025-08-21 13:30:00
1398
原创 数位和-洛谷B4065 [GESP202412 二级]
【摘要】题目要求计算n个正整数的最大数位和。数位和指数字各位相加之和,如12345的数位和为15。解法是:读取每个数后,通过循环取各位并累加,比较并更新最大数位和。关键点:1)数值范围大(≤10^12),需用long类型;2)需处理边界情况(如n=0或极大值)。代码虽在Dev-C++通过,但洛谷因测试数据更严格可能报错,需确保数据类型和边界处理完善。最终输出所有数中的最大数位和。
2025-08-21 09:00:00
512
原创 寻找数字-B4064 [GESP202412 二级]
摘要:该问题要求判断给定的正整数a是否能表示为某个正整数b的四次方。对于每组测试数据,通过计算a的四次方根并验证其四次方是否等于a来判定结果。若存在满足条件的b则输出,否则输出-1。关键点在于避免暴力搜索,采用数学方法直接求解四次方根以提高效率。输入数据规模较大(1≤t≤10^5),需保证算法时间复杂度为O(1)每测试用例。
2025-08-20 13:00:00
334
原创 平方之和 - 洛谷B4002 [GESP202406 二级]
题目要求判断给定的正整数是否能表示为两个正整数的平方和。对于每个数a_i,遍历可能的x值,检查是否存在满足x² + y² = a_i的整数y。方法包括:读取输入n和a_i,对每个a_i遍历x从1到√a_i,计算y=√(a_i -x²),若y为整数且大于0则输出"Yes",否则输出"No"。注意每次循环前重置标志变量。时间复杂度最坏为O(n√a_i)。
2025-08-20 07:45:00
452
原创 计数-洛谷B4007 [GESP202406 二级]
小杨认为自己的幸运数是正整数 k(注:保证 1≤k≤9)。小杨想知道,对于从 1 到 n 的所有正整数中, k 出现了多少次。从 1 到 25 中,2 出现的正整数有 2,12,20,21,22,23,24,25 ,一共出现了 9 次。输出从 1 到 n 的所有正整数中, k 出现的次数。对于全部数据,保证有 1≤n≤1000,1≤k≤9。第一行包含一个正整数 n。第二行包含一个正整数 k。
2025-08-20 01:30:00
293
原创 小杨做题-洛谷B3923 [GESP202312 二级]
题目描述小杨做题的规律:第1天做a道,第2天做b道,从第3天起每天做前两天之和。若某天做题数≥m,则后续停止做题。求第N天时的总做题数。解题思路采用递推方法计算每天题数,若某天题数≥m则提前终止。输入为a,b,m,N(0≤a,b≤10,a,b<m<1,000,000,3≤N≤364)。关键点在于处理终止条件。代码实现提供了变量和数组两种方法,分析其优缺点:数组更直观但可能浪费空间;变量更高效但调试稍难。建议根据N的大小选择合适方法。
2025-08-19 07:45:00
862
原创 乘法问题-洛谷B3954 [GESP202403 二级]
摘要:题目要求计算给定n个正整数的乘积,若结果超过10^6则输出">1000000"。解题时需注意:1) 初始化乘积为1;2) 逐个相乘并实时检查是否超过阈值,若超过可提前终止;3) 避免整数溢出(建议使用long long类型存储乘积)。优化后的代码直接比较1000000而非pow(10,6),并在超过阈值时立即结束程序。常见错误包括未及时终止导致错误输出,以及int类型溢出问题。数据规模保证n≤50,a≤100。
2025-08-19 07:00:00
759
原创 数字黑洞-洛谷B3866 [GESP202309 二级]
摘要:本文介绍了一个数学变换过程,即任意三位数(各位数字不同)通过重复进行"最大排列数减最小排列数"操作,最终必定会得到495(数字黑洞)。给出了具体实现步骤:1)拆分数字各位;2)排序重组为最大和最小三位数;3)计算差值;4)统计变换次数直至得到495。提供了两种C++实现方案:使用条件判断排序和使用sort函数排序,核心都是通过循环完成变换过程并计数。该问题考察了数字处理、排序算法和循环控制等编程基础能力。
2025-08-18 12:00:00
615
原创 自幂数判断(详解与多种实现方法)-洛谷B3841 [GESP202306 二级]
本文介绍了判断自幂数的多种方法。自幂数指一个N位数满足各位数字的N次方和等于自身。针对输入的正整数,需先计算其位数N,再求各位数字的N次方和进行判断。文中指出直接使用pow函数可能导致整数计算错误,建议使用round函数或自定义整数幂函数。提供了四种实现方案:基础实现、函数封装、自定义幂函数和预处理幂次法,其中预处理法通过预先计算0-9的N次方来优化性能。最后还介绍了字符串处理法,将数字转为字符串便于操作。这些方法各有特点,可根据需求选择适合的实现方式。
2025-08-18 07:30:00
1369
原创 找素数-洛谷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
761
原创 勾股数-洛谷B3845 [GESP样题 二级]
本文介绍了如何编程计算在给定正整数n范围内满足条件的勾股数组数。勾股数是指满足a²+b²=c²且1≤a≤b≤c≤n的三个正整数。解题提供了两种方法:暴力枚举法(三层循环遍历所有可能组合)和优化枚举法(利用数学关系减少循环层数)。重点强调了优化思路的重要性,包括限制循环范围避免重复计算、使用平方根函数简化计算等。通过分析样例和代码实现,帮助理解如何将数学问题转化为高效的程序解决方案。
2025-08-17 08:00:00
848
原创 小杨的H字矩阵-洛谷B3924 [GESP202312 二级]
本文介绍了构造N×N(N为奇数)H字矩阵的方法。矩阵特征为:最左/右列为'|',中间行第2~N-1个字符为'-',其余为'a'。解题思路借鉴了X矩阵的坐标法,通过条件分解:先判断列边界(j=1或j=N),再处理中间行(i=(N+1)/2),最后填充默认字符'a'。文中给出了C++实现代码,并对比了X矩阵与H矩阵的差异,提出可扩展应用于T字、十字等矩阵图形。总结出通过行列号定位、分层判断的方法论,适用于各类规则矩阵构造问题。
2025-08-16 19:02:04
1181
原创 小杨的 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
1226
原创 百鸡问题-洛谷B3836 [GESP202303 二级]
本文介绍了"百鸡问题"的编程解法及其优化过程。该问题要求在给定公鸡、母鸡、小鸡价格和总钱数、总鸡数的条件下,计算可行的购买方案数量。文章首先给出暴力枚举的三重循环解法,然后逐步优化:通过缩小循环范围减少枚举次数,使用clock()函数测量运行时间,最终通过减少循环层数实现显著性能提升。核心优化思路是:1)优化循环次数范围;2)减少嵌套循环层数。文章最后给出通用解法代码,适用于任意输入参数情况,并强调在编程竞赛中优化枚举算法的重要性。
2025-08-16 15:33:21
817
原创 画三角形-洛谷B3837 [GESP202303 二级]
摘要:题目要求用大写字母A-Z循环输出n行三角形图案,每行字母数与行号相同。使用双重循环控制行列输出,内层循环输出当前行字母,外层控制换行。通过取模运算实现Z到A的循环。代码用变量current记录字母偏移量,每次输出后自增,对26取模保证字母循环。时间复杂度O(n²),空间复杂度O(1)。
2025-08-16 12:40:21
255
原创 画正方形-洛谷B3844 [GESP样题 二级]
2)每一行的每列字母分别是从改行首字母开始,依次递增,如果列号j从0开始,到n-1列,则每一列的字母应该为行首字母('A'+I)+列号j的转换,也即char('A'+(i+j)%26),同理,考虑到字母溢出,所以这里需要同26求模;特别的,规定大写字母 Z 的下一个字母为大写字母 A。1)每一行的行首字母分别是'A' ,'B', 'C' ...'Z' ,'A', ' B', 'C...'Z',如果行号i从0开始,到n-1行,则每一行的行首字母应该为char('A'+i%26),考虑到字母溢出情况;
2025-08-16 11:56:02
226
原创 衡量机器学习模型的指标
为了进一步了解模型的能力,我们需要某个指标来衡量,这就是性能度量的意义。有了一个指标,我们就可以对比不同的模型了,从而知道哪个模型相对好,哪个模型相对差,并通过这个指标来进一步调参以逐步优化我们的模型。
2025-08-12 22:40:25
790
原创 【GESP】C++一级知识点之【集成开发环境】
本文详细介绍了Orwell Dev-C++ 5.11(蓝色图标)的安装配置与使用教程。作为国内教材、竞赛、考级最常用的C/C++开发工具,该版本体积小巧(仅48M),内置GCC编译器,是NOI/NOIP等比赛的指定开发环境。文章从安装步骤、创建项目、编译运行到调试程序进行了系统讲解,重点解决了初学者常见的调试配置问题,包括编译器选项设置、断点调试方法等。同时提供了详细的快捷键说明(F7/F8/F4等)和调试技巧,帮助用户快速掌握这个轻量级开发工具的基本操作。
2025-08-12 22:36:37
980
原创 【GESP】C++一级知识点之【计算机基础知识】
一级考纲知识点1:了解计算机的基本构成(CPU,内存,I/O 设备等) ,了解 Windows、Linux等操作系统基本概念和常见操作,了解计算机的历史及在现代社会中的常见应用。
2025-08-11 14:24:42
864
原创 P1042【深基8,例1】乒乓球
【题目背景】国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中 11 分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白 11 分制和 21 分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。
2025-04-19 18:21:51
741
原创 模拟算法(一)作业分析及答案
数轴上的每个整数点,即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
1099
原创 GESP C++三级 知识点讲解
(一)知识点详述(1)了解二进制数据编码:原码、反码、补码。(2)掌握数据的进制转换:二进制、八进制、十进制、十六进制。(3)掌握位运算:与(&)、或(|)、非(~)、异或(^)、左移(<<)、右移(>>)的基本使用方法及原理。(4)了解算法的概念与描述,熟练运用自然语言、流程图、伪代码方式来描述算法。(5)C++一维数组基本应用;(6)掌握字符串及其函数的使用包括但不限于大小写转换、字符串搜索、分割、替换。(7)理解枚举算法、模拟算法的原理及特点,可以解决实际问题,
2025-04-06 22:45:21
1854
原创 模拟算法(一):一维数组模拟
模拟算法就是模拟题目给的操作,用代码一步一步的描述出来即可。在过程中使用的都是我们已知的各种方法,如数组元素调用、排序、枚举等等,只是这些过程一般比较复杂。本次课程主要针对一维数组的模拟。在各类算法竞赛中,包括CSP-J/S,NOIP等竞赛,经常会出现各类“模拟题目”,遇到这种题大家不需要害怕,甚至可以将其作为“送分题”,因为你只需要按照题目叙述的方式来写程序就能得到最终答案。模拟不是一种算法,而是一种技巧,要想掌握模拟题目,就需要多读题、多整理细节问题。
2025-04-06 22:34:24
1136
原创 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
960
原创 P1009 【深基4,例7】阶乘之和
为了优化这个问题,我们可以考虑使用高精度计算库(如 GMP 或 C++17 引入的 <bit> 和 <numeric> 中的工具,尽管后者主要用于位操作和数值算法,并不直接支持大数运算),但在这里,我将展示一个更简单的优化方法:使用模运算来避免溢出(尽管这不会给出精确的阶乘和,但可以用于处理大数问题时的近似或特定场景下的计算)。然而,对于直接计算阶乘和的问题,更实际的做法是使用一种算法来避免直接计算大数的阶乘,因为即使使用模运算,当 n 很大时,计算单个阶乘也会非常耗时。当n的值超过21,就会出现溢出。
2024-08-29 08:00:00
975
原创 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
2975
原创 P5721 【深基4.例6】数字直角三角形
4)%m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。代码中的printf函数用于格式化输出数字,其中%02d表示输出的整数至少占用两位宽度,不足部分以0填充。前边的*定义的是总的宽度,后边的定义的是输出的个数。可以把这个任务分成两个层级:大任务输出每一行,小任务输出每一行的每个数字。7)f格式:用来输出实数(包括单、双精度),以小数形式输出。9)g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。1)%-:在字段宽度中,表示左对齐输出,如省略表示右对齐输出。
2024-08-28 21:32:40
1361
原创 信息学奥赛一本通编程启蒙(不断更新ing~)
目录可以作为c++初学者的练习题,后面会在专栏中陆续更新题目解析信息学奥赛一本通-编程启蒙(C++版)在线评测系统 https://bas.ssoier.cn/index.php第1章 顺序结构第2章 选择结构第3章 循环结构第4章 函数第5章 数在数组中的存储与加工第6章 字符数组和字符串第7 章 结构体第8章 算法设计初体验作业1: 3145、3146、3150、3153、3154作业2:
2024-08-27 18:35:45
3178
原创 作业1(循环): 3145、3146、3150、3153、3154
这种方法避免了使用数组来存储每个行程的时间,而是直接在循环中处理输入的时间数据,并将它们累加起来。判断偶数:在遍历过程中,检查每个整数是否为偶数(即整数除以2的余数为0)。初始化变量:初始化一个变量sum来存储偶数的总和,初始值设为0。输出结果:遍历结束后,输出sum变量的值,即为所有偶数的总和。读取输入:首先读取第一行的整数n,了解有多少个整数需要处理。遍历输入:接着读取第二行的n个整数,对每个整数进行判断。累加偶数:如果当前整数是偶数,则将其加到sum变量中。
2024-08-27 18:35:01
503
原创 P5718 【深基4.例2】找最小值
另外,<bits/stdc++.h>是一个不规范的、但在竞赛编程中常见的头文件,它包含了几乎所有C++标准库中的内容,包括std::min和std::max函数。然而,由于它不是一个官方推荐的头文件,通常不建议在生产环境中使用。如果新输入的数字要小于擂主,那么新数字打擂成功,代替原来的擂主;如果没有小于擂主,那么打擂失败,新的数字只能灰溜溜地下去了。直到最后,经过历练,最后留下的擂主就是最小值。的初始值设置为读到的第一个数据,把第一个数直接作为擂主,然后和后面的数字打擂台,也可以得到相同的效果。
2024-08-22 17:18:53
522
原创 洛谷官方精选题单解析(持续更新~)
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
6018
原创 【深基4,例5】猜数字游戏
小洛机器人和你玩猜数游戏!小洛随机选择并默默记下一个1~100的整数,你需要不断猜测这个数字是什么并输入验证。如果你输入的数字比小洛选择的数字小,小洛会输出“Too small如果比小洛选择的数字大,小洛输出“TOO large如果刚好猜对,小洛输出“!!如果一次没有猜中,则继续猜,直到猜中为止。这个猜数游戏是一个经典的二分查找算法的应用实例,其中小洛机器人代表程序中的算法部分,而你代表与程序交互的用户。小洛机器人在1到100之间随机选择一个整数作为答案。用户输入一个猜测的数字。
2024-08-20 20:50:51
935
原创 P5720 【深基4.例4】一尺之棰
条语句,这样就可以不需要加花括号了。一次次循环后,a会越来越小,知道a变为0时,循环成立条件不再成立,跳出循环。这里循环体虽然是两个操作,但是使用了逗号表达式,将两个不同的表达式写在了一起,变成。
2024-08-19 18:55:32
321
原创 P5719 【深基4.例3】分类平均
如果要计算一些数字的平均数,除了要知道这些数字的总和,还要知道这些数字有几个。根据等差数列求和公式,个自然数中就有 一个是。
2024-08-18 20:40:54
373
原创 OpenJudge
10:超级玛丽游戏04:填空:类型转换105:填空:类型转换220:求一元二次方程的根21:苹果和虫子208:多边形内角和15:银行利息16:买房子25:求特殊自然数32:求分数序列和33:计算分数加减表达式的值37:雇佣兵38:计算多项式的导函数07:有趣的跳跃08:石头剪刀布11:大整数减法12:计算2的N次方13:大整数的因子14:求10000以内n的阶乘15:阶乘和01:统计数字字符个数02:找第一个只出现一次的字符03:基因相关性04:石头剪子布05:输出亲朋字符串。
2024-08-18 19:10:16
1425
原创 探寻编程之信息学奥赛:升级打怪的冒险之旅
一、信息学奥赛晋级之路信息学奥赛(简称:信奥)全称为全国青少年信息学奥林匹克竞赛(National Olympiad in Informatics,NOI)与数学,物理,化学,生物四科竞赛统称五大科竞赛。是国内包括港澳在内的省级代表队最高水平的大赛。信奥赛历史悠久,自1984年由中国计算机学会创办第一届至今,为国家培养了大批的计算机拔尖人才。信奥是教育部白名单赛事中科技类最高赛项也是现存唯一允许小学、初中、高中均可报名参加的奥赛。
2024-08-17 22:40:46
7842
2
原创 信息学奥赛有关网站整理集合
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
24931
清华大学第七弹:实用DeepSeek赋能家庭教育
2025-04-14
【信息技术教育】CCF编程能力C++&Python认证标准:青少年编程技能分级评估体系设计
2025-04-14
清华大学第六弹-AIGC发展研究3.0版:多领域应用与未来展望、研究背景与
2025-04-14
人工智能DeepSeek与AI幻觉:金融应用、风险评估及创造力价值分析了清华大学新媒
2025-04-14
清华大学第四弹-DeepSeek+DeepResearch:让科研像聊天一样简单(官方100页完整版)
2025-04-14
SCI各个部分常用句型
2024-05-22
统计学习方法(第二版)-李航课件
2024-05-17
斯坦福大学 2014 机器学习教程个人笔记(V5.31)
2024-05-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅