自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1000)
  • 收藏
  • 关注

原创 上海计算机学会2025年8月月赛C++丙组T4 破灭

摘要: Gleipse 带领 $n$ 个魔法师拯救世界,每个魔法师持有两块红/蓝水晶的组合。通过 $2n$ 次操作收集水晶排列,求不同排列方案数模 $998244353$ 的结果。使用动态规划,状态 $dp[i][j]$ 表示 $i$ 个蓝水晶和 $j$ 个红水晶的方案数,通过递推累计状态转移。最终答案为 $dp[蓝水晶总数][红水晶总数]$,时间复杂度 $O(n^2)$。

2025-08-30 11:50:01 1212

原创 上海计算机学会2025年8月月赛C++丙组T5 种子

该问题要求统计满足特定条件的四元组数量,其中每个四元组对应田地里A、B、C种子的特定排列。通过预处理每个位置右边B的数量和下边C的数量,可以高效计算符合条件的四元组数。具体方法是:对于每个A,将其右边B的数量乘以下边C的数量,并将所有结果累加。这种预处理方法将时间复杂度优化为O(n²),适用于大规模数据。

2025-08-30 09:09:46 432

原创 上海计算机学会2025年8月月赛C++丙组T3 最小的差

摘要:给定两个整数序列,从两个序列中各选一个数,计算它们的差的绝对值,求最小的差值。解决方案是将两个序列合并后排序,遍历比较相邻不同序列元素的差值,取最小值。时间复杂度为O((n+m)log(n+m)),适用于大规模数据(n,m≤300,000)。样例输入输出演示了该算法正确性。

2025-08-30 09:00:11 457

原创 上海计算机学会2025年8月月赛C++丙组T2 打印三元组

摘要:该编程题目要求输出所有满足条件的三元组(a,b,c),其中a≤b≤c且a+b+c=n。输入为一个整数n,输出按字典序排列的所有可能三元组。通过双重循环枚举前两个数,确保第三数不小于第二个数即可。时间复杂度为O(n²),适用于n≤2000的情况。样例输入2时输出(0,0,2)和(0,1,1)。

2025-08-30 08:41:19 293

原创 上海计算机学会2025年8月月赛C++丙组T1 镜像加密

本文介绍了如何对一个字符进行镜像加密处理。加密规则根据字符类型不同而有所区分:大写字母转换为字母表中对称位置的大写字母(如A→Z),小写字母转换为对应小写字母(如a→z),数字字符转换为数字表中对称位置(如0→9)。通过判断字符类型,使用简单的数学运算即可实现转换。文末提供了C++代码示例,清晰地展示了如何实现这一加密过程。

2025-08-30 08:34:06 276

原创 信息学奥林匹克竞赛 普及组 NOIP 2012 T1 质因数分解

题目要求找出一个正整数n的两个不同质因数中较大的那个。n的范围是1到2×10^9。60分解法采用从大到小枚举,但会超时。正解改为从小到大枚举,找到较小的质因数i后,直接输出n/i即可得到较大的质因数,时间复杂度优化为O(√n)。例如输入21,输出7。

2025-08-17 10:55:43 303

原创 信息学奥林匹克竞赛 普及组 NOIP 2013 T3 小朋友的数字

NOIP2013 普及组 T3。

2025-08-17 10:44:14 336

原创 信息学奥林匹克竞赛 普及组 NOIP 2013 T2 表达式求值

题目要求计算只包含加法和乘法的算术表达式值,结果保留最后4位。采用顺序处理法,从左到右遍历表达式,处理数字和运算符。遇到前加后乘时先算乘法,其他情况先算前面的运算。使用三个变量a、b、c存储运算数,两个变量op1、op2存储运算符。最终处理后输出结果对10000取模的值。算法时间复杂度为O(n),适用于大规模数据。

2025-08-17 10:36:28 174

原创 信息学奥林匹克竞赛 普及组 NOIP 2013 T1 计数问题

题目要求计算1到n的所有整数中数字x(0≤x≤9)出现的总次数。例如,在1到11中,数字1出现了4次。 输入是两个整数n和x,输出x出现的总次数。通过遍历1到n的每个数,逐个检查每位数字是否等于x,统计出现次数。使用取模运算逐位分解数字,时间复杂度为O(nlogn)。 样例输入11 1输出4,验证了算法的正确性。数据范围保证n≤10^6。

2025-08-17 10:26:50 255

原创 信息学奥赛一本通提高篇 1553 【例 2】暗的连锁 倍增求 LCA 树上差分

摘要 题目要求在由N个节点组成的无向图中,通过切断1条主边和1条副边使图不连通。主边构成生成树,副边为附加边。解决方案是:1. 使用树上差分算法统计每条主边被多少副边覆盖;2. 如果主边未被覆盖,切断任意副边均可;若被1条副边覆盖,则需切断该副边。最终统计满足条件的主边数量即可得到方案数。关键步骤包括:预处理深度和祖先信息,利用LCA进行树上差分,最后通过DFS计算前缀和确定每条边的覆盖情况。

2025-08-16 21:57:06 744

原创 信息学奥赛一本通提高篇 1552 【例 1】点的距离 倍增求 LCA

本文介绍了如何用LCA算法计算树中任意两点间的距离。给定一棵n个节点的树和Q个查询,每次查询两个节点x和y之间的距离。通过预处理每个节点的深度及其各级祖先,使用二进制上跳法快速找到最近公共祖先(LCA)。两点距离等于各自深度之和减去LCA深度的两倍。该算法时间复杂度为O(n log n)预处理,O(log n)每次查询,适用于大规模数据。示例代码展示了基于邻接表的存储、深度计算、LCA查询和距离计算的具体实现。

2025-08-16 20:47:26 262

原创 信息学奥林匹克竞赛 普及组 NOIP 2014 T3 螺旋矩阵

摘要 本文介绍了解决螺旋矩阵问题的三种方法。题目要求根据给定的n计算n×n螺旋矩阵中第i行第j列的数字。第一种暴力模拟法时间复杂度O(n²),适用于小规模数据;第二种方法通过计算每一圈的首数字和位置关系来优化;第三种更简洁的算法直接根据行列位置计算所在层数,通过数学公式得出结果。后两种方法时间复杂度更优,适合处理大规模数据。文章提供了详细代码实现,帮助理解不同解题思路的差异和优化方向。

2025-08-16 10:31:02 1514

原创 信息学奥林匹克竞赛 普及组 NOIP 2014 T2 比例简化

题目要求将给定的比例A:B简化为一对不超过L且互质的整数A':B',使得A'/B'≥A/B且差值最小。通过枚举所有可能的分子分母组合,筛选出满足条件的解。具体实现中,检查每对i,j是否互质且满足比例条件,并记录最优解。最终输出简化后的比例A' B'。

2025-08-16 10:00:06 417

原创 信息学奥林匹克竞赛 普及组 NOIP 2014 T1 珠心算测验

摘要 该题目要求计算给定正整数集合中,有多少个数可以表示为集合中其他两个不同数的和。提供了两种解法:暴力三重循环(O(N^3))和排序后双指针优化(O(N^2))。示例输入4个数1,2,3,4,输出2,因为3=1+2,4=1+3。数据范围n≤100,数字大小不超过10,000。两种方法均能通过所有测试用例。

2025-08-16 09:45:46 293

原创 信息学奥林匹克竞赛 普及组 NOIP 2015 T3 求和

文章摘要 题目描述了一个格子染色和编号的问题,要求计算满足特定条件的三元组分数之和。关键点在于: 三元组(x,y,z)需满足x<y<z且y-x=z-y,即x和z同奇偶 颜色color_x=color_z 分数计算公式为(x+z)*(number_x+number_z) 解法分析: 暴力解法O(n^2)可过50%数据 优化解法将同颜色同奇偶的格子分组,利用多项式分解公式优化计算 最终解法时间复杂度O(n),通过预处理和数学公式优化,适用于大规模数据 输入输出样例展示了具体计算过程,题目数据范围提示

2025-08-15 20:45:13 882

原创 信息学奥林匹克竞赛 普及组 NOIP 2015 T2 扫雷游戏

NOIP2015 普及组 T2。

2025-08-15 19:45:40 332

原创 信息学奥林匹克竞赛 普及组 NOIP 2015 T1 金币

国王发放金币给骑士,规则是:第1天发1枚,随后2天每天发2枚,接着3天每天发3枚,依此类推。给定天数k,求获得的总金币数。两种解法:1)逐日计算金币并累加,当完成k天的发放周期后增加金币数量;2)分轮计算,每轮发放i天i枚金币。两种方法的时间复杂度均为O(k),适用于k≤10^4的情况。输入6时输出14(1+2+2+3+3+3),输入1000时输出29820。

2025-08-13 19:46:31 550

原创 信息学奥林匹克竞赛 普及组 NOIP 2016 T3 海港

文章摘要 题目描述小K记录海港到达船只信息,要求统计每艘船到达时24小时内乘客来自的不同国家数量。输入包含n艘船的信息,每艘船有到达时间、乘客数量和国籍列表。输出每艘船到达时满足条件的国家数。 关键点: 时间窗口为24小时(86400秒) 需要高效统计不同国籍数量 输入保证时间递增 给出两种解法: 暴力解法(O(nk)):每次重新统计时间窗口内的所有乘客 优化解法(O(k)):使用滑动窗口维护国籍计数,动态增减国家数 数据范围较大,暴力解法只能通过70%测试点,优化解法才能通过全部测试点。

2025-08-13 19:07:53 944

原创 上海计算机学会2025年6月月赛C++乙组T3 斯瓦普

摘要:Carol 需要通过对两个序列 $a$ 和 $b$ 进行交换操作(可交换任意次),使得序列 $a$ 的极差(最大值与最小值的差)最小。通过枚举所有可能的 $a$ 序列最大值,并检查是否可以通过交换操作实现该最大值,最终找到最小的极差。算法时间复杂度为 $O(n^2)$,对于 $n \leq 2 \times 10^5$ 的数据规模,需要进行优化才能通过全部测试用例。

2025-08-04 22:46:53 408

原创 上海计算机学会2025年6月月赛C++乙组T2 二进制

本题要求统计1到n中二进制表示恰好包含k个1的整数个数。采用组合数学方法,先将n分解为二进制位,然后从高位到低位处理。对于每个1的位,计算将其置0后剩余位能组合出k个1的数量。时间复杂度主要取决于二进制位数处理,适用于大范围数据。最终结果需加上n本身是否满足条件的情况。

2025-08-04 22:37:37 338

原创 上海计算机学会2025年6月月赛C++乙组T1 美克斯

题目要求计算给定排列在区间[l,r]内的最小未出现自然数。通过预处理前缀最小值和后缀最小值,可以高效回答查询。当查询区间包含所有数时,答案为n;否则答案为区间外的最小值。对于n,q≤1e5的数据规模,该方法的时间复杂度为O(n+q),能够高效处理大规模输入。样例输入输出验证了算法的正确性。

2025-08-04 22:22:05 386

原创 上海计算机学会2025年6月月赛C++丙组T5 砝码整理

题目要求将砝码按质量从小到大排序,每次可以选定区间进行排序,花费为该区间最大值与最小值的差。要求找出最小总花费。通过分析,最优策略是将数组分成若干段,每段排序后的最大值与原始排序后的对应位置相等。具体实现时,先对数组排序,然后遍历原数组,维护当前段的最大值和最小值,当遇到排序后的最大值时就分段计算花费。时间复杂度为O(n log n),适用于n≤2×10^5的情况。

2025-08-04 21:37:08 1019

原创 上海计算机学会2025年6月月赛C++丙组T4 前缀逻辑值

该题目要求计算前缀逻辑表达式的值。表达式由0(false)、1(true)和逻辑运算符(&、|、^)组成,采用前缀表示法。解题思路是递归处理表达式:遇到运算符则递归计算两个操作数,遇到0/1直接返回对应布尔值。示例代码使用全局索引x跟踪当前处理位置,通过递归调用实现运算。时间复杂度为O(n),适用于大规模输入(最长2×10^5字符)。

2025-08-04 21:22:26 281

原创 上海计算机学会2025年6月月赛C++丙组T3 前缀不等

摘要 题目要求将一个互不相同的整数序列重新排列,使得所有前缀和都不等于给定的x值,且字典序最小。解法是先将序列升序排列以保证最小字典序,然后检查前缀和是否等于x。如果出现等于x的情况,就交换当前元素与下一个元素来破坏该前缀和。若整个序列的和恰好为x,则无解。时间复杂度为O(n log n),适用于n≤1000的数据规模。示例输入输出验证了该方法的正确性。

2025-08-04 21:18:38 263

原创 上海计算机学会2025年6月月赛C++丙组T2 跳房子

摘要:题目描述小象玩简化版跳房子游戏,有n个格子,每个格子标注数字a_i。小象从第1格开始,每次跳到i+a_i位置,若正好到达第n格则获胜,否则失败。给出n和数组a,判断小象能否获胜。通过模拟跳跃过程,若最终位置等于n输出"Win",否则输出"Lose"。时间复杂度为O(n),适合处理n≤10^5的数据规模。

2025-08-04 21:07:31 426

原创 上海计算机学会2025年6月月赛C++丙组T1 小象喝水

摘要:题目给出五个杯子(100ml、250ml、500ml、1000ml、2000ml),要求根据输入的水量n(n≤2000),选择能装下n的最小杯子。通过简单的条件判断即可解决:若n≤100选100ml,n≤250选250ml,n≤500选500ml,n≤1000选1000ml,否则选2000ml。这是一个典型的分支结构应用问题。

2025-08-04 20:59:45 330

原创 上海计算机学会2025年7月月赛C++乙组T3 生成树

本文研究了一个生成树问题:给定n个节点的带权完全无向图,边权为节点权值乘积,求最小生成树。通过分析不同情况(全正、全负、混合),提出贪心解法:全正时以最小节点为中心连接,全负时以最大节点为中心连接,混合时正数与最小负数、负数与最大正数连接。算法时间复杂度为O(nlogn),主要来自排序步骤。代码实现简洁高效,适用于大规模数据(n≤5×10^5)。样例验证了算法的正确性,如输入3个正数时输出5,输入混合正负数时输出-3。

2025-08-03 22:17:33 382

原创 上海计算机学会2025年7月月赛C++乙组T2 不要回文

摘要:题目要求判断给定的字符串能否重排为不含长度大于1的回文串的形式。关键在于统计字母频率,并检查是否满足两个条件:1)最多字母的数量不超过其他字母数量加1的2倍;2)扣除最多和第二多的字母后剩余字母足够间隔最多字母。满足条件则输出"Yes",否则输出"No"。

2025-08-03 22:07:38 443

原创 上海计算机学会2025年7月月赛C++乙组T1 异或区间

本文解决了一个关于序列区间异或与和相等的问题。给定长度为n的序列,要求统计满足区间和等于区间异或的区间数量。关键思路是发现这些数的二进制位1不能重复,否则和会大于异或。算法通过维护各位1最后出现的位置,计算合法区间范围。时间复杂度为O(n),适用于大规模数据(n≤300,000)。样例输入4个数的输出为8,验证了算法的正确性。

2025-08-03 21:57:19 286

原创 上海计算机学会2025年7月月赛C++丙组T5 面包

这是一道关于面包货架整理的动态规划问题。给定n个货架,每个货架上有不同数量的蛋糕、甜甜圈和羊角面包,要求通过最少移动次数使每个货架只保留一种面包或为空。采用动态规划方法,状态dp[i][j]表示处理前i个货架后,已存在面包类型组合j(用3位二进制表示)时的最小移动次数。通过状态转移,每次选择将当前货架转化为某一种面包类型,并累加需要移动的其他面包数量。最终答案即为处理完所有货架后三种面包类型都存在时的最小移动次数(dp[n][7])。算法时间复杂度为O(n)。

2025-08-03 21:41:09 767

原创 上海计算机学会2025年7月月赛C++丙组T3 棋盘距离求和

摘要:题目要求计算n个点两两之间的切比雪夫距离之和。通过将坐标转换为u=x+y和v=x-y,将问题转化为曼哈顿距离求解。算法对转换后的坐标进行排序并利用前缀和优化,最终将u和v的距离和相加后除以2得到结果。该方法有效降低了计算复杂度,适用于大规模数据(n≤200,000)。

2025-08-03 21:27:03 369

原创 上海计算机学会2025年7月月赛C++丙组T4 染色

摘要 题目要求统计将数组中两个不同元素染红后,红蓝两组元素和奇偶性相同的染色方案数。关键在于奇偶性的组合计算:当奇数数量为奇数或数组长度为1时无解;否则方案数为C(奇,2)+C(偶,2)+奇×偶的组合数。时间复杂度为O(n)。

2025-08-03 21:24:54 427

原创 上海计算机学会2025年7月月赛C++丙组T2 游戏

题目描述了一群人进行游戏,每位玩家的得分都是不同的非负整数。给出N条信息,每条信息表示得分第A_i高的玩家分数为B_i。要求计算出游戏中最多可能有多少名玩家。 解题关键在于观察到最多玩家数等于所有A_i+B_i的最小值。例如样例输入1中4+7=11,2+9=11,6+2=8,取最小值8得到正确答案。因此解决方案是遍历所有给定的(A_i,B_i)对,计算它们的和并取最小值作为结果。 算法时间复杂度为O(N)每组数据,适用于大规模输入。

2025-08-03 19:26:07 384

原创 上海计算机学会2025年7月月赛C++丙组T1 十六进制

题目要求将0-255范围内的十进制整数转换为两位十六进制数。提供两种解法:第一种直接使用printf函数按十六进制格式输出;第二种通过数学运算分别计算高低位,再转换为相应字符。输出格式要求两位数,不足补零。两种方法均能正确实现转换,第一种更简洁,第二种更直观地展示了转换过程。

2025-08-03 19:17:36 341

原创 CCF-GESP计算机学会等级考试2025年6月六级C++T2 最大因数

题目描述了一棵具有10^9个节点的特殊树结构,其中每个节点k的父节点是k的最大真因数。给定q组询问,每组给出两个节点编号x和y,要求计算它们在树上的距离(边数)。 解题思路是:对于两个节点,不断比较大小,较大的节点向上移动到其父节点(最大真因数),直到两者相遇。每次移动计数一次,最终累计次数即为两节点距离。该算法通过逐步缩小节点间差距来找到共同祖先,从而确定路径长度。 样例输入输出展示了不同节点对的距离计算,包括简单情况(1-3为1)和较复杂情况(120-650为9)。代码实现使用循环比较和因数分解,高效解

2025-07-05 22:02:47 1284

原创 CCF-GESP计算机学会等级考试2025年6月六级C++T1 学习小组

题目摘要:班主任要将班级 $n$ 名同学划分为若干学习小组,每组 $k$ 人的积极度为 $a_k$。给定数组 $a_1$ 到 $a_n$,求所有划分方案中积极度之和的最大值。输入包括人数 $n$ 和积极度数组,输出最大积极度和。样例1输入4人,数组[1,5,6,3],输出10;样例2输入8人,数组[0,2,5,6,4,3,3,4],输出12。小数据可用深搜(40分),正解为完全背包动态规划,时间复杂度为$O(n^2)$。

2025-07-05 21:44:56 915

原创 CCF-GESP计算机学会等级考试2025年6月五级C++T2 最大公因数

题目要求计算n个正整数在q次增量i后的最大公约数((\gcd))。暴力解法时间复杂度高,适用于60%数据。优化解法利用(\gcd)性质:相邻数差值的(\gcd)与首项的(\gcd)即为所求。具体步骤为:1)排序数组;2)计算相邻差值(\gcd);3)对每个i,计算首项+i与差值(\gcd)的(\gcd)。这样将时间复杂度从O(NQ)优化到O(NlogN + Q)。输入规模可达1e5时,优化解法显著提升效率。

2025-07-05 21:14:00 845

原创 CCF-GESP计算机学会等级考试2025年6月五级C++T1 奖品兑换

题目描述同学们可以用两种券组合(a,b或b,a)兑换奖品。给定n张课堂券和m张作业券,求最多能兑换多少份奖品。 解析: 暴力解法(60分):枚举用券方式,时间复杂度O(n/a),适用于小数据。 正解:使用二分法优化,时间复杂度O(log(min(n,m))),通过判断是否能用x个奖券来调整搜索范围。 关键点: 需要处理两种兑换方式(a,b)和(b,a) 对于大数据必须使用二分法才能通过时间限制 交换变量确保a≥b和n≥m可以简化计算 样例说明: 例1:8张两种券,兑换需要(2,1),最多可换5份 例2:大数

2025-07-05 21:00:14 1041

原创 CCF-GESP计算机学会等级考试2025年6月四级C++T2 排序

题目要求将n个同学按身高从高到低排序(身高相同则按体重从重到轻排序),计算最少需要的相邻交换次数。输入包含n和每个同学的身高体重,输出最少交换次数。通过求逆序对数量来解决问题,具体实现为双重循环比较每对同学是否构成逆序对,统计总数即为答案。时间复杂度为O(n²),适用于n≤3000的数据规模。

2025-07-05 20:34:57 751

原创 CCF-GESP计算机学会等级考试2025年6月四级C++T1 画布裁剪

这道题目要求对给定的二维字符矩阵进行裁剪,提取指定行列范围内的子矩阵。输入包含矩阵的行列数h和w,裁剪范围x1到x2行和y1到y2列,以及h行w列的字符矩阵。输出只需要输出指定范围内的子矩阵内容即可。题目保证所有输入参数都在合法范围内,实现简单,只需按要求提取指定行列的字符块并输出。时间复杂度为O(h×w),适用于给定的数据规模。

2025-07-05 20:24:50 1067

GESP C++ 等级考试真题及样题,截止24年3月(全).rar

GESP C++ 等级考试真题及样题,截止24年3月(全)

2024-03-18

中国电子学会C语言1级-10级-20190927.pdf

中国电子学会C语言1级-10级-20190927.pdf

2023-12-01

CCF-GESP 等级考试 2023年3月认证C++二级真题 附答案

CCF-GESP 2023年3月认证C++二级真题

2023-03-22

CCF-GESP 等级考试 2023年3月认证C++一级真题 附答案

CCF-GESP 2023年3月认证C++一级真题

2023-03-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除