- 博客(79)
- 收藏
- 关注
原创 P1044 [NOIP 2003 普及组] 栈
摘要:本文探讨了计算给定操作数序列1,2,…,n通过栈操作可能产生的输出序列总数的问题。该问题等价于计算第n个卡特兰数,其递推公式为C(n)=∑C(i)*C(n-1-i)。文章给出了一个C++实现,通过动态规划方法预先计算并存储卡特兰数数组,最终输出C(n)作为结果。该算法时间复杂度为O(n²),适用于n≤18的情况,能够高效解决栈操作序列的计数问题。
2025-07-23 17:36:17
406
原创 P1002 [NOIP 2002 普及组] 过河卒
摘要:本文解决了一个棋盘路径计数问题,其中过河卒需要从(0,0)走到(n,m),只能向右或向下移动,同时要避开对方马及其控制点。使用动态规划方法,先标记马的控制区域,然后通过递推计算可达路径数。算法时间复杂度为O(nm),空间复杂度O(nm),适用于n,m≤20的情况。输入为B点坐标和马的坐标,输出为可行路径总数。示例输入6 6 3 3对应输出6,验证了算法的正确性。
2025-07-23 16:54:05
746
原创 P1255 数楼梯
这是一个计算爬楼梯不同走法的程序,采用动态规划和高精度处理。算法基于斐波那契数列关系:f(n)=f(n-1)+f(n-2),其中f(1)=1,f(2)=2。程序使用二维数组f[N][N]存储大数,每位数单独处理进位。对于输入n(1≤n≤5000),程序迭代计算并输出结果。时间复杂度为O(n^2),适用于大数情况。例如输入4输出5,表示4阶楼梯有5种走法。程序通过逐位相加和进位处理确保了大数计算的准确性。
2025-07-23 16:52:21
217
原创 P2392 kkksc03考前临时抱佛脚
因此要开始刷习题集,每科都有一个习题集,分别有 s1,s2,s3,s4 道题目,完成每道题目需要一些时间,可能不等(A1,A2,…,As1,B1,B2,…,Bs2,C1,C2,…,Cs3,D1,D2,…,As1 共 s1 个数,表示第一科习题集每道题目所消耗的时间。本题包含 5 行数据:第 1 行,为四个正整数 s1,s2,s3,s4。第 5 行,为 D1,D2,…,Ds4 共 s4 个数,意思均同上。第 4 行,为 C1,C2,…
2025-07-23 16:20:09
715
原创 P1217 [USACO1.5] 回文质数 Prime Palindromes
该程序用于在给定范围[a,b]内找出所有回文质数(既是质数又是回文数的数字)。主要思路是:1)生成不同位数的回文数;2)检查生成的数字是否在给定范围内且为质数。程序通过分解数字前半部分并反转构造回文数,使用质数判断函数进行验证。输入两个正整数a和b,输出该范围内所有符合条件的回文质数,每行一个。算法优化了质数检查过程,避免不必要的计算。
2025-07-23 16:17:41
652
原创 P2036 [COCI 2008/2009 #2] PERKET
题目摘要: Perket美食需要选择配料,使总酸度(各配料酸度的乘积)与总苦度(各配料苦度的和)的绝对差最小。给定n种配料(1≤n≤10)的酸度s和苦度b,必须至少选择一种配料。使用DFS遍历所有可能的配料组合,计算每种组合的酸苦差并记录最小值。例如,输入3种配料(1,10)时输出7;输入2种配料(3,8)和(5,8)时输出1。算法时间复杂度为O(2^n),适用于n较小的情况。
2025-07-23 10:48:01
542
原创 P3799 小 Y 拼木棒
摘要:题目要求从n根不同长度的木棒中选出4根组成正三角形。解决方案为:统计各长度木棒出现次数,枚举可能的边长a,计算用两根a长度木棒作为底边的组合数,以及另外两根木棒长度之和等于a的组合数(考虑相等和不等两种情况)。最终将两种情况的组合数相乘累加,并对1e9+7取模。算法时间复杂度与木棒最大长度相关,适用于1≤n≤1e5的数据规模。
2025-07-23 10:40:40
901
原创 P1706 全排列问题
摘要:该程序使用回溯法生成1到n的全排列,并按字典序输出。通过递归函数bfs实现排列生成,利用数组st标记已使用数字,arr存储当前排列。每个数字输出占5个字符宽度,满足1≤n≤9的输入要求。时间复杂度为O(n!),适用于小规模排列生成。
2025-07-22 15:58:23
306
原创 P1149 [NOIP 2008 提高组] 火柴棒等式
该题目要求计算使用给定数量火柴棍能拼出的A+B=C等式数量。关键点包括:1) 预处理数字0-9的火柴消耗,并扩展到多位数;2) 使用DFS枚举可能的A、B、C组合;3) 满足A+B=C且总火柴消耗等于n-4(扣除加号和等号)。样例输入14输出2,输入18输出9,验证了算法的正确性。代码通过递归搜索所有可能组合,时间复杂度取决于n值和数字范围。该解法适用于n≤24的限制条件,通过优化数字范围(0-1000)确保效率。
2025-07-21 17:46:26
206
原创 P3654 First Step (ファーストステップ)
【题目摘要】 Aqours组合需要在R×C的篮球场矩阵中寻找连续K个空位(横竖均可)来排练。矩阵包含障碍物(#)和空地(.)。要求计算所有可能的1×K连续空地排列方式。 【输入输出】 输入:R,C,K和矩阵 输出:可行的站位总数 【示例】 输入5×5矩阵和K=2时,输出8种站位。 【数据范围】 1≤R,C≤100,1≤K≤min(R,C) 【核心问题】 遍历矩阵,统计所有横向/纵向连续的K个空地组成的有效站位数量。
2025-07-21 15:24:47
28
原创 P3392 涂条纹
本文研究了将N×M彩色格子旗帜转换为合法三色旗的最小涂改次数问题。合法旗要求从上到下依次为至少一行白色、蓝色和红色区域。提供了两种解法: 深度优先搜索(DFS)方法:通过递归遍历所有可能的颜色分段方案,计算每种方案所需涂改次数,保留最小值。预处理每行涂成白/蓝/红的代价,利用剪枝优化搜索过程。 前缀和方法:预处理每行涂色代价并建立前缀和数组,通过三重循环枚举所有可能的分段方案(白、蓝、红区域行数),利用前缀和快速计算总代价,时间复杂度为O(N²)。 两种方法均能正确求解,其中前缀和法效率更高。代码实现包含完
2025-07-21 14:45:57
137
原创 P1088 [NOIP 2004 普及组] 火星人
摘要:本文描述人类与火星人通过手指排列顺序表示数字的交流方式。火星人将N个手指的排列视为一个N位数,不同的排列对应不同的数值。给定初始排列和要加上的小整数M,需要找到按字典序排列的第M+1个排列作为结果。提供的C++代码使用深度优先搜索实现排列生成,在找到目标排列后输出。算法复杂度为O(N!),适用于N较小的场景。输入样例展示了5根手指初始排列12345加1后得到12453的过程。
2025-07-21 14:01:12
37
原创 P1706 全排列问题
摘要:本文实现了一个使用回溯算法生成1到n所有不重复全排列的程序。通过递归函数bfs()进行深度优先搜索,利用状态数组st标记已使用的数字,将符合条件的排列存入数组arr。当生成完整排列时,按指定格式输出结果。该算法时间复杂度为O(n!),适用于n≤9的情况,能够按字典序输出所有排列组合。
2025-07-21 11:28:15
229
原创 P1157 组合的输出
本文介绍了如何使用深度优先搜索(DFS)算法生成从1到n中选取r个数的所有组合。输入为两个自然数n和r(1<n<21,0≤r≤n),输出所有按字典序排列的组合,每个数字占3个字符宽度。代码通过递归实现DFS,在每一层选择当前数字后继续向后搜索,确保组合严格升序排列。该方法保证了输出结果符合题目要求的格式和顺序。示例展示了当输入5 3时,程序正确输出所有10种3位数的组合,每个数字右对齐占3位宽度。
2025-07-21 11:23:37
27
原创 P1036 [NOIP 2002 普及组] 选数
该程序从给定的n个整数中选取k个数的所有组合,计算这些组合的和是否为素数,最后统计素数和的个数。使用DFS生成组合,通过剪枝优化效率,并调用isprime函数判断素数。输入为整数个数n和选取数k,以及n个整数;输出为素数和的数量。示例输入n=4,k=3,整数为3,7,12,19时,输出1(3+7+19=29是素数)。该算法适用于小规模数据(n≤20)。
2025-07-21 11:18:03
125
原创 P1618 三连击(升级版)
摘要 题目要求将数字1-9分成三组,组成三个三位数,使其比例为A:B:C。给出两种解法:1)深度优先搜索遍历所有排列组合,但存在超时问题;2)更优解法通过比例系数k生成候选数,检查是否满足条件。第二种方法效率更高,通过遍历可能的k值(保证三位数在100-999之间),验证生成的三个数是否使用1-9各一次且无重复。若无解则输出"No!!!"。样例输入1:2:3时输出四组解,按首数字升序排列。
2025-07-21 11:08:18
152
原创 P2089 烤鸡
该题目要求计算10种配料(每种1-3克)组合成给定美味程度n的所有方案。使用深度优先搜索(DFS)遍历所有可能的配料组合,当10种配料总和等于n时记录方案。最终输出方案总数及所有方案(按字典序排列)。对于n=11的样例,共有10种方案,均为9个1克和1个2克的排列组合。算法时间复杂度为O(3^10),在给定数据范围内可行。若无解则输出0。
2025-07-21 10:33:12
30
原创 P2241 统计方形(数据加强版)
摘要:该题目要求计算n×m棋盘中的正方形和长方形(不含正方形)数量。通过数学推导,正方形总数通过累加不同边长的可能正方形数量得到,而长方形总数则通过组合公式计算所有矩形后减去正方形数量得出。输入两个正整数n和m(≤5000),输出两个结果。示例输入2 3时输出8个正方形和10个长方形(不含正方形)。代码使用循环计算正方形,组合公式计算矩形,最后作差得到结果。
2025-07-21 10:31:48
38
原创 P5143 攀爬者
摘要:题目要求计算从最低点到最高点按高度顺序经过所有点的总欧几里得距离。首先将N个三维坐标点按z值升序排序,然后依次计算相邻两点间的距离并累加。时间复杂度为O(NlogN)(排序耗时),空间复杂度O(N)。示例输入5个点,输出总距离6.928。核心算法包括排序和距离计算,确保结果精确到三位小数。
2025-07-21 10:14:09
314
原创 P1116 车厢重组
摘要:题目描述了一种通过旋转桥面交换相邻两节车厢的列车排序方法,要求实现自动化计算最少旋转次数。输入为车厢总数N和初始顺序,输出为将车厢升序排列所需的最小交换次数。解决方案通过计算逆序数实现,即统计数组中前面元素大于后面元素的次数。例如输入4节车厢[4,3,2,1]时,逆序数为6,即最少需要6次旋转交换。核心算法采用双重循环遍历数组计算逆序对数,时间复杂度为O(n²)。
2025-07-21 10:13:22
341
原创 P1068 [NOIP 2009 普及组] 分数线划定
摘要:本文描述了一个世博会志愿者选拔程序,根据笔试成绩确定面试分数线。程序输入包括报名人数n和计划录取人数m,面试分数线按m×150%向下取整确定。所有成绩不低于该分数线的选手进入面试。程序首先对选手按成绩降序、报名号升序排序,计算分数线后统计合格人数并输出结果。样例输入6人,计划录取3人,最终5人达到88分及以上进入面试。时间复杂度为O(nlogn),适用于n≤5000的情况。
2025-07-21 10:11:00
591
原创 P1152 欢乐的跳
摘要:题目要求判断一个整数数组是否符合"欢乐的跳"条件,即相邻元素差的绝对值包含1到n-1的所有整数。程序首先读取数组长度n和元素,计算相邻元素的绝对差并标记出现的差值1到n-1。最后检查这些差值是否全部存在,输出"Jolly"或"Notjolly"。输入样例1 {1,4,2,3} 符合条件,而样例2 {5,1,4,2,-1,6} 不符合。
2025-07-21 10:10:01
363
原创 P2676 [USACO07DEC] Bookshelf B
摘要:该算法解决奶牛叠塔问题,要求选出最少奶牛使其身高总和达到书架高度。首先将N头奶牛的身高降序排序,然后从高到低累加身高,直到总和≥B时输出当前奶牛数量。示例输入6头奶牛(身高6-19)和B=40时,最优解是3头奶牛(18+11+13)。算法时间复杂度主要由排序决定,为O(N log N)。
2025-07-18 12:27:17
861
原创 P1781 宇宙总统
地球历公元 6036 年,全宇宙准备竞选一个最贤能的人当总统,共有 n 个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统。接下来有 n 行,分别为第一个候选人到第 n 个候选人的票数。共两行,第一行是一个整数 m,为当上总统的人的号数。第一行为一个整数 n,代表竞选总统的人数。票数可能会很大,可能会到 100 位数字。第二行是当上总统的人的选票。
2025-07-18 12:26:24
141
原创 P1093 [NOIP 2007 普及组] 奖学金
本文介绍了NOIP2007普及组T1题目,要求根据学生的语文、数学、英语成绩计算总分,并按总分降序、语文降序、学号升序的规则排序后输出前5名学生的学号和总分。程序使用结构体存储学生信息,定义自定义比较函数实现排序逻辑,最终输出符合要求的前5名学生数据。输入格式为n+1行,输出为5行,每行包含学号和总分。样例输入输出展示了正确的排序结果。代码实现简单高效,适合竞赛使用。
2025-07-18 12:02:36
748
原创 P1923 【深基9.例4】求第 k 小的数
本文介绍了使用快速选择算法在O(n)时间内查找第k小元素的方法。给定n个数字(n<5000000且为奇数),算法通过分治策略将数组划分为两部分:以枢轴元素为界,左边元素小于枢轴,右边元素大于枢轴。根据k与枢轴位置的关系,递归处理相应子区间,最终找到第k小的元素。代码实现中,选择中间元素作为枢轴,并通过交换操作进行分区,避免了使用标准库的nth_element函数。算法的时间复杂度为O(n),适用于大规模数据。输入格式为n和k,以及n个整数;输出为第k小的数(0-based)。示例展示了输入5个数字时查
2025-07-18 12:00:48
384
原创 P1055 [NOIP 2008 普及组] ISBN 号码
摘要:本文介绍了ISBN号码的验证方法。ISBN由9位数字、1位识别码和3位分隔符组成,识别码通过前9位数字分别乘以1-9后求和取模11计算得出(余数10用X表示)。程序提取ISBN中的数字,计算正确识别码,并与输入的识别码比较:若匹配则输出"Right",否则输出修正后的正确ISBN。示例代码展示了该验证过程的实现方法。
2025-07-18 11:12:19
646
原创 P4414 [COCI 2006/2007 #2] ABC
摘要 题目要求将输入的三个整数A、B、C(满足A<B<C)按指定字母顺序重新排列。输入包含三个乱序的整数和一个由'A'、'B'、'C'组成的字符串表示输出顺序。程序先将三个数排序,再根据字母顺序输出对应位置的数。例如,输入"1 5 3"和"ABC",输出排序后的"1 3 5";输入"6 4 2"和"CAB",输出"6 2 4"。通过排序和字符匹配实现灵活输出。
2025-07-18 11:11:35
296
原创 P1046 [NOIP 2005 普及组] 陶陶摘苹果
摘要:该编程题目要求计算陶陶能摘到的苹果数量。已知10个苹果的高度(100-200cm)和陶陶伸手可及的最大高度(100-120cm),陶陶可以站在30cm高的板凳上摘苹果。程序需要输入苹果高度和陶陶高度,输出能摘到的苹果数(即高度≤陶陶高度+30cm的苹果数量)。示例输入输出显示当输入10个苹果高度和陶陶高度110cm时,能摘到5个苹果。代码使用数组存储苹果高度,通过遍历比较得出结果。
2025-07-18 11:10:54
280
原创 P1888 三角函数
该程序输入一组勾股数a,b,c,输出其较小锐角的正弦值(约分后的分数)。首先确定斜边(最大值)和两条直角边,然后计算较短直角边与斜边的比值,最后通过最大公约数进行约分。例如输入3 5 4,输出3/5。程序包含gcd函数用于约分,时间复杂度主要取决于gcd计算。
2025-07-18 11:10:04
306
原创 P1424 小鱼的航程(改进版)
该程序计算小鱼在n天内游泳的总距离。小鱼工作日(周一至周五)每天游250公里,周末(周六周日)休息。输入起始星期x和天数n,程序通过循环逐日判断是否为工作日并累加距离,同时处理星期循环(超过7时重置为1)。最终输出累计游泳公里数。例如输入3和10(从周三开始10天),输出2000公里。算法时间复杂度为O(n),适用于给定的数据范围。
2025-07-18 11:08:48
361
原创 P1422 小玉家的电费
摘要:本文介绍一个计算阶梯电费的程序。根据福建省电价规定,用电量分三档计费:150千瓦时以下按0.4463元/度,151-400度按0.4663元/度,401度以上按0.5663元/度。程序输入用电量,输出保留1位小数电费。代码使用条件判断实现分段计算,如样例输入267度电,输出121.5元。
2025-07-18 11:07:48
353
原创 P5717 【深基3.习8】三角形分类
该程序用于判断三条线段能否构成三角形及其类型。首先对三条边进行排序,检查是否满足三角形两边之和大于第三边的条件。若不满足,输出"Not triangle";若满足,则根据平方和关系判断是锐角、直角还是钝角三角形,并检查是否为等腰或等边三角形。输出结果按直角三角形、锐角三角形、钝角三角形、等腰三角形、等边三角形的顺序排列,每条结果占一行。
2025-07-18 11:04:41
475
原创 P1909 [NOIP 2016 普及组] 买铅笔
题目要求计算购买至少n支铅笔的最小花费。商店提供3种包装,每种包装有不同数量和价格。需选择一种包装,通过向上取整计算所需份数,求出总花费并比较3种方案的最小值。例如样例1中,购买30支装的2份共60支花费54元是最优解。算法思路是遍历每种包装,用(n+num-1)/num计算份数,比较总花费后输出最小值。时间复杂度O(1),适用于n≤10000的数据范围。
2025-07-18 11:03:35
315
原创 P1085 [NOIP 2004 普及组] 不高兴的津津
这篇文章描述了一个编程问题,要求检查初中生津津一周的日程安排是否会让她不高兴。津津每天上课总时间超过8小时就会不高兴,且时间越长越不高兴。程序需要输入7天的学校上课时间和课外辅导时间,计算每天总时长,找出最不高兴的那天(如有多个则输出最早的一天)。示例代码展示了如何用数组存储数据,遍历比较找出超过8小时且时间最长的那天,最终输出结果。这个问题考察了基本的数组操作和条件判断。
2025-07-18 11:01:19
423
原创 P5716 【深基3.例9】月份天数
该程序根据输入的年份和月份计算该月的天数。通过数组存储非闰年各月份天数,单独处理闰年2月的情况。闰年判断条件为:能被400整除,或能被4整除但不能被100整除。若月份为2月则根据闰年判断输出28或29天,其他月份直接输出对应数组值。程序确保输入年份在1583-2020范围内。
2025-07-18 11:00:39
197
原创 P5715 【深基3.例8】三位数排序
摘要:本文实现了一个简单的三数排序程序。给定三个0到100的整数a,b,c,程序使用C++标准库的sort函数对它们进行升序排序并输出。输入以空格分隔,输出结果也用空格分隔。示例展示了输入"1 14 5"输出"1 5 14",以及输入"2 2 2"输出"2 2 2"的情况。程序通过数组存储输入,调用sort函数排序后输出结果。
2025-07-18 11:00:04
444
原创 P5715 【深基3.例8】三位数排序
摘要:题目要求对输入的三个0-100之间的整数进行从小到大的排序。输入以空格分隔,输出用空格分隔排序后的结果。示例输入1为"1 14 5",输出为"1 5 14";输入2为"2 2 2",输出为"2 2 2"。解题代码使用C++的sort函数对数组排序,然后输出结果。该方案简洁高效,直接利用标准库实现排序功能。
2025-07-13 12:21:05
338
原创 P5714 【深基3.例7】肥胖问题
摘要:题目要求根据输入的体重(kg)和身高(m)计算BMI指数(体重/身高平方),并根据BMI值判断体型状态:小于18.5输出"Underweight";18.5-24输出"Normal";大于等于24先输出BMI值(保留6位有效数字,去除末尾0)再输出"Overweight"。示例输入70kg/1.72m输出"Normal",100kg/1.68m输出"35.4308\nOverweight"。数据范围:4
2025-07-13 11:52:51
370
原创 P5713 【深基3.例5】洛谷团队系统
在洛谷上使用团队系统非常方便的添加自己的题目。如果在自己的电脑上配置题目和测试数据,每题需要花费时间 5 分钟;而在洛谷团队中上传私有题目,每题只需要花费 3 分钟,但是上传题目之前还需要一次性花费 11 分钟创建与配置团队。现在要配置 n 道题目,如果本地配置花费的总时间短,请输出。输出一行,一个字符串。如果本地配置花费的总时间短,请输出。输入一个正整数 n,表示需要配置的题目量。数据保证 1≤n≤100。
2025-07-12 18:16:36
306
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅