算法竞赛题池
对一些算法竞赛题目的解答过程进行分享和记录
幸存者letp
数据结构、算法、数学等的分享与纪录
展开
-
第十三题:天干地支
地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、未(wèi)、申(shēn)、酉(yǒu)、戌(xū)、 亥(hài)。每过 6060 年,天干会循环 66 轮,地支会循环 55 轮,所以天干地支纪年每 6060 年轮回一次。天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。输入一行包含一个正整数,表示公元年份。原创 2024-04-04 22:13:19 · 307 阅读 · 0 评论 -
第十二题:灌溉
每经过一分钟,水就会向四面扩展一个方格,被扩展到的方格可以被认为已经灌溉好。即如果前一分钟某一个方格被灌溉好,则下一分钟它上下左右的四个方格也被灌溉好。接下来 tt 行描述出水管的位置,其中第 ii 行包含两个数 r,cr,c 表示第 rr 行第 cc 列有一个排水管。其中,1≤n,m≤100,1≤t≤10,1≤k≤1001≤n,m≤100,1≤t≤10,1≤k≤100。小蓝可以控制一个按钮同时打开所有的出水管,打开时,有出水管的位置可以被认为已经灌溉好。输入的第一行包含两个整数 n,mn,m。原创 2024-04-04 21:42:09 · 270 阅读 · 0 评论 -
第十一题:明明的随机数
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 NN 个 1 到 1000 之间的随机整数(N≤100N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。我拿到这个题的时候,第一个想到的是用链表,所以我花了四十分钟左右用链表实现了,但我参考了大佬的写法,太巧妙了,所以我会连同大佬的代码(会标明大佬的ID)一同进行分享和记录。输出 2 行,第 1 行为 1 个正整数 MM,表示不相同的随机数的个数。原创 2024-04-04 20:42:41 · 418 阅读 · 0 评论 -
第十题:金币
之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币......;这种工资发放模式会一直这样延续下去:当连续 NN 天每天收到 NN 枚金币后,骑士会在之后的连续 N+1 天里,每天收到 N+1 枚金币。输入只有 1 行,包含一个正整数 K (1≤K≤104),表示发放金币的天数。将给予相同硬币数的视为同一类,然后在每个相同硬币数类中包含的天数中进行处理。输出只有 1 行,包含一个正整数,即骑士收到的金币数。原创 2024-04-04 18:24:41 · 380 阅读 · 0 评论 -
第九题:最大间隙
给定一个序列 a1,a2,⋯ ,an。其中 a1≤a2≤⋯≤an。相邻两个数之间的差(后一个数减前一个数)称为它们的间隙。输入的第一行包含一个整数 n,表示序列的长度。第二行包含 n 个正整数,为给定的序列。其中,1≤n≤1000,1≤ai≤105。输出一个整数,表示序列中最大的间隙值。请问序列中最大的间隙值是多少?原创 2024-04-04 18:05:21 · 311 阅读 · 0 评论 -
第八题:天数
输入一个月份,请输出 2021 年这个月有多少天。输入一行包含一个整数,表示月份。输出一个整数,这个月的天数。原创 2024-04-04 17:20:49 · 280 阅读 · 0 评论 -
第七题:求和
小明对数位中含有 2、0、1、92、0、1、9 的数字很感兴趣,在 11 到 4040 中这样的数包括 1、2、9、101、2、9、10 至 32、3932、39 和 4040,共 2828 个,他们的和是 574574。当你运行这段代码时,它会输出在1到40之间,数位中含有2、0、1、9的数字共有多少个,以及它们的和是多少。,数位中含有2、0、1、9的数字,并计算它们的和,我们可以编写一个简单的程序来实现这个任务。函数来检查字符串中是否包含字符 '2'、'0'、'1' 或 '9'。计算1~2019之间。原创 2024-04-04 17:06:39 · 218 阅读 · 0 评论 -
第六题:标题统计
需要注意一点,虽然题目中有说字符串长度的区间:s (1≤∣s∣≤5);但并非一次一定会输入5个字符,所以在统计字符串长度时要以实际输入字符个数为准。注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字符数时,空格和换行符不计算在内。输出只有一行,包含一个整数,即作文标题的字符数(不含空格和换行符)。凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符?输入文件只有一行,一个字符串 s (1≤∣s∣≤5)。最大运行内存: 256M。原创 2024-04-04 12:13:37 · 266 阅读 · 0 评论 -
第五题:大写
在Python中,处理大数非常简单,因为Python的整数类型是无限精度的,这意味着你可以处理任意大小的整数,而不会像在某些其他编程语言中那样遇到整数溢出的问题。给定一个只包含大写字母和小写字母的字符串,请将其中所有的小写字母转换成大写字母后将字符串输出。这些方法都是Python字符串类型的一部分,非常方便和直观。Python中的字符串处理非常强大,你可以使用多种方法来操作字符串中的字符。是非常大的整数,但是Python可以轻松地将它们相加并返回结果。对于所有评测用例,字符串的长度不超过 100100。原创 2024-04-04 11:32:08 · 286 阅读 · 0 评论 -
第四题:扫雷
第 2 行到第 n+1 行每行包含 m 个整数,相邻整数之间用一个空格分隔。如果对应的整数为 0,表示这一格没有地雷。如果对应的整数为 1,表示这一格有地雷。对于没有地雷的方格,输出这格周围的地雷数量。对于有地雷的方格,输出 9。在一个 n行 m 列的方格图上有一些位置有地雷,另外一些位置为空。请为每个空位置标一个整数,表示周围八个相邻的方格中有多少个地雷。输出 n 行,每行 m 个整数,相邻整数之间用空格分隔。其中,1≤n,m≤100 分钟后还是在当天。输入的第一行包含两个整数 n,m。原创 2024-04-04 11:15:29 · 255 阅读 · 0 评论 -
第三题:时间加法
其中,0≤a≤23,0≤b≤59,0≤t,t0≤a≤23,0≤b≤59,0≤t,t 分钟后还是在当天。现在时间是 aa 点 bb 分,请问 tt 分钟后,是几点几分?输出第一行包含一个整数,表示结果是几点。第二行包含一个整数,表示结果是几分。输入的第一行包含一个整数 aa。第二行包含一个整数 bb。第三行包含一个整数 tt。原创 2024-04-03 22:40:52 · 276 阅读 · 0 评论 -
第二题:合法日期
没想到,日记很快就被老师发现了问题,原来小蓝记完 8 月 31 日的日记,竟又记了 8 月 32 日和 8 月 33 日的日记。如果输入的月份不是1到12之间的数字,程序会提示用户输入有效的月份。例如,如果你想知道2024年的4月有多少天,你可以直接查看规则,知道4月有30天。在公历中,大多数月份的天数是固定的,但有几个月份的天数会根据年份的不同而变化。在编程中,你可以根据这些规则来判断某一年的某个月的天数。其中,1≤m≤20,1≤d≤401≤m≤20,1≤d≤40。第二行包含一个整数 dd,表示日期。原创 2024-04-03 22:38:27 · 361 阅读 · 0 评论 -
第二章 第一题:成绩分析
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。输入的第一行包含一个整数 n (1≤n≤104),表示考试人数。第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。请计算这次考试的最高分、最低分和平均分。第一行包含一个整数,表示最高分。第二行包含一个整数,表示最低分。不分析了,题目写的很清楚了已经。原创 2024-04-02 21:47:41 · 302 阅读 · 0 评论 -
第七题:最少砝码
三个砝码:(最大区间为[1,x],虽然x我们还不知道,但我们已经知道肯定有重量为1和3的砝码,即4(包括4)之前的重量已经可以用两个(最少的砝码个数)表示出来了,所以相当于此时范围变为了[4,x],又因为如果x = 10,怎表示不了5了,所以x最大取到9,用数学表达式表示就是:x-(1+3)=5 -----> x = 9)最大区间为[1,9].........;一个砝码:最大区间为[1,1],最大只能表示1,表示不了2。3个砝码重量是 1、4、6,可以称出 1 至7的所有重量。输入包含一个正整数 N。原创 2024-04-01 21:03:55 · 736 阅读 · 0 评论 -
第六题:修剪灌木
根据以上图片分析:当是第i棵树被置零后,这时分两种情况:第一,此时正在从右向左置零,所以想要第i棵树为最大值,则需要从第i棵树(此时为0)开始加数,加到最右边的第N棵树后方向反转,继续加数,直到加到第i个数的后一个数(也就是第i+1棵树)时,i有了最大值。相当于第i棵树后边走了一个来回,也就是走了(N-i)*2步,而每一步第i棵树都加1,所以该情况下第i棵树最大值为:(N-i)*2;爱丽丝修剪灌木的顺序是从最左侧的灌木开始, 每天向右修剪一棵灌木。在第一天的 早晨, 所有灌木的高度都是 0 厘米。原创 2024-04-01 19:12:23 · 443 阅读 · 0 评论 -
第五题:顺子日期
表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123;而 20221023 则不是一个顺子日期,它一个顺子也没有。小明想知道在整个 2022 年份中,一共有多少个顺子日期?题意为:2022年中有多少个来顺序连续的日期;其实根据题意也可以猜到答案不会很大,可以一个一个的去试,试到14这道题就通过了!顺子指的就是连续的三个数字:123、456 等。顺子日期指的就是在日期的。原创 2024-04-01 14:38:07 · 257 阅读 · 0 评论 -
第四题:星期一
整个 20 世纪(1901 年 1 月 1 日至 2000 年 12 月 31 日之间),一共有多少个星期一?(不要告诉我你不知道今天是星期几)判断一下闰年,求出多的那几天;此外,判断周一的个数其实就是判断周的个数。原创 2024-03-31 21:10:37 · 236 阅读 · 2 评论 -
第三题:分数
分析:稍微化简一下就可以求出比值。(因为化简后可以看出分子最后一个加的数是1,所以分子为奇数,而分母是2的次方,所以不用考虑分子分母同分问题)每项是前一项的一半,如果一共有 20 项,求这个和是多少,结果用分数表示出来。类似:3/2,当然,这只是加了前 2项而已。原创 2024-03-31 20:13:59 · 213 阅读 · 0 评论 -
第二题:卡片
现在小蓝手里有 00 到 99 的卡片各 20212021 张,共 2021020210 张,请问小蓝可以从 11 拼到多少?小蓝准备用这些卡片来拼一些数,他想从 11 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。例如,当小蓝有 3030 张卡片,其中 00 到 99 各 33 张,则小蓝可以拼出 11 到 1010,但是拼 1111 时卡片 11 已经只有一张了,不够拼出 1111。小蓝有很多数字卡片,每张卡片上都是数字 00 到 99。小蓝想知道自己能从 11 拼到多少。原创 2024-03-31 19:38:06 · 181 阅读 · 0 评论 -
题目:门牌制作
小蓝制作门牌的方法是先制作 00 到 99 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、71、0、1、7,即需要 11 个字符 00,22 个字符 11,11 个字符 77。这条街一共有 20202020 位住户,门牌号从 11 到 20202020 编号。请问要制作所有的 11 到 20202020 号门牌,总共需要多少个字符 22?2000~2020 24(写出来数)小蓝要为一条街的住户制作门牌号。原创 2024-03-31 17:59:23 · 294 阅读 · 0 评论