蓝桥杯刷题
文章平均质量分 63
命运从未公平
三枚筹码足矣,所有,或者一无所有
展开
-
答疑(蓝桥杯)
这段代码实现了一个高效的算法,通过先累加所有同学的进入和答疑时间,然后排序并计算每个同学离开办公室的时间对后面同学发消息时刻的影响,最后得到一个最小化的发消息时刻之和。这段代码是用来解决上述答疑问题的,旨在找到一种答疑顺序,使得同学们在群里发消息的时刻之和最小。老师想合理的安排答疑的顺序,使得同学们在课程群里面发消息的时刻之和最小。输出一个整数,表示同学们在课程群里面发消息的时刻之和最小是多少。老师可以安排答疑的顺序,同学们要依次进入老师办公室答疑。输入第一行包含一个整数 n ,表示同学的数量。原创 2024-04-25 00:04:02 · 1411 阅读 · 5 评论 -
完全日期(蓝桥杯)
例如:2021 年 6 月 5 日的各位数字之和为 2 + 0 + 2 + 1 + 6 + 5 = 162+0+2+1+6+5=16,而 16 是一个完全平方数,它是 44 的平方。例如:2021年 6 月 23 日的各位数字之和为 2 + 0 + 2 + 1 + 6 + 2 + 3 = 162+0+2+1+6+2+3=16,是一个完全平方数。请问,从 2001 年 1月 1日到 2021年 12 月 31日中,一共有多少个完全日期?如果一个日期中年月日的各位数字之和是完全平方数,则称为一个完全日期。原创 2024-04-21 14:49:16 · 670 阅读 · 1 评论 -
数字接龙(蓝桥杯)
因此行进路径可以用一个包含 0 . . . 7 之间的数字字符串表示,如下图 1是一个迷宫示例,它所对应的答案就是:41255214。这段代码使用了深度优先搜索算法来找到一条合法的路径,它考虑了路径的唯一性和循环序列的要求。小蓝最近迷上了一款名为《数字接龙》的迷宫游戏,游戏在一个大小为N × N 的格子棋盘上展开,其中每一个格子处都有着一个 0 . . . K − 1 之间的整数。这段代码是一个基于深度优先搜索(DFS)的算法,用于解决一个特定的路径问题,其中需要考虑路径的字典序。,表示没有格子被访问过。原创 2024-04-20 01:27:19 · 1069 阅读 · 0 评论 -
小球反弹(蓝桥杯)
在其内部左上角顶点有一小球(无视其体积),其初速度如图所示且保持运动速率不变,分解到长宽两个方向上的速率之比为 dx : dy = 15 : 17。小球碰到长方形的边框时会发生反弹,每次反弹的入射角与反射角相等,因此小球会改变方向且保持速率不变(如果小球刚好射向角落,则按入射方向原路返回)。从小球出发到其第一次回到左上角顶点这段时间里,小球运动的路程为多少单位长度?本题的结果为一个小数,在提交答案时只填写这个小数,填写多余的内容将无法得分。,因此我们只需要找到下一个i倍的dx比上j倍的dy等于15比17(原创 2024-04-19 00:36:19 · 1579 阅读 · 1 评论 -
握手问题(蓝桥杯)
小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手(且仅有一次)。但有 7 个人,这 7 人彼此之间没有进行握手(但这 7 人与除这 7 人以外的所有人进行了握手)。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。注意 A 和 B 握手的同时也意味着 B 和 A 握手了,所以算作是一次握手。这题稍微模拟一下就好了,比如我设7个人相互握手,其中只有3个人没有相互握手。原创 2024-04-17 00:56:28 · 470 阅读 · 0 评论 -
R 格式(蓝桥杯)
对于一个大于 0 的浮点数 d,可以用 R 格式的整数来表示。对于 100% 的评测用例:1 ≤ n ≤ 1000,1 ≤ 将 d 视为字符串时的长度≤ 1024;此代码通过数位分离和模拟手算乘法、加法的方式,精确地处理了大数问题,确保了在面对极大的 n 时仍能正确计算并避免浮点数精度问题。对于 50% 的评测用例:1 ≤ n ≤ 10,1 ≤ 将 d 视为字符串时的长度 ≤ 15。一行输入一个整数 n 和一个浮点数 d,分别表示转换参数,和待转换的浮点数。输出一行表示答案:d 用 R 格式表示出来的值。原创 2024-04-16 00:51:20 · 671 阅读 · 6 评论 -
好数(蓝桥杯)
一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位 · · · )上的数字是奇数,偶数位(十位、千位、十万位 · · · )上的数字是偶数,我们就称之为“好数”。这段代码通过将数字转换成字符串的形式,然后检查字符串的每个字符来判断一个数是否符合“好数”的定义。那么就可以定义一个k代表数字n的当前位数,从1开始计数,即个位是1,十位是2,百位是3……对于第一个样例,24 以内的好数有 1、3、5、7、9、21、23,一共 7 个。给定一个正整数 N,请计算从 1 到 N 一共有多少个好数。原创 2024-04-15 01:24:59 · 934 阅读 · 0 评论 -
飞机降落(蓝桥杯)
对于第一组数据,可以安排第 3 架飞机于 0 时刻开始降落,20 时刻完成降落。安排第 2 架飞机于 20 时刻开始降落,30 时刻完成降落。安排第 1 架飞机于 30 时刻开始降落,40 时刻完成降落。这段代码利用回溯算法尝试为每架飞机安排降落时间,如果所有飞机都能在它们可以盘旋的时间内安全降落,则输出"YES",否则输出"NO"。一架飞机降落完毕时,另一架飞机可以立即在同一时刻开始降落,但是不能在前一架飞机完成降落前开始降落。对于第二组数据,无论如何安排,都会有飞机不能及时降落。,代表测试数据的组数。原创 2024-04-11 15:08:59 · 3301 阅读 · 8 评论 -
冶炼金属(蓝桥杯)
这个炉子有一个称作转换率的属性 V,V 是一个正整数,这意味着消耗 V个普通金属 O 恰好可以冶炼出一个特殊金属 X,当普通金属 O的数目不足 V时,无法继续冶炼。现在给出了 N条冶炼记录,每条记录中包含两个整数 A 和 B,这表示本次投入了 A 个普通金属 O,最终冶炼出了 B 个特殊金属 X。这段代码的目的是为了解决一个具体问题:在给定一系列冶炼记录的情况下,计算将普通金属O冶炼成特殊金属X的转换率V的可能的最小值和最大值。输出两个整数,分别表示 V 可能的最小值和最大值,中间用空格分开。原创 2024-04-11 13:59:14 · 1089 阅读 · 0 评论 -
01串的熵(蓝桥杯)
为了解决这个问题,我们需要设置两个变量,分别表示0和1出现的次数,然后根据信息熵的定义和给定的条件建立方程,求解这个方程即可得到0出现的次数。需要注意的是,由于0出现的次数比1少,我们可以设0的次数为x,1的次数为23333333-x。这个程序会枚举0出现的次数从0到n(串的总长度),对于每一个可能的出现次数,计算出相应的信息熵,然后与给定的信息熵m进行比较。对于一个长度为23333333的01串,如果其信息熵为11625907.5798,且0出现次数比1少,那么这个01串中0出现了多少次?原创 2024-04-11 01:49:58 · 1218 阅读 · 2 评论 -
日期统计(蓝桥杯)
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。这段代码通过深度优先搜索的回溯方法,尝试所有可能的8位数日期序列,并检查它们是否符合条件。小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的范围之内。请你帮小蓝计算下按上述条件一共能找到多少个不同的 2023 年的日期。对于相同的日期你只需要统计一次即可。这段代码实现了一个基于回溯算法的日期统计问题。最后,程序输出这个计数器,即符合条件的日期数量。原创 2024-04-11 00:09:21 · 421 阅读 · 0 评论 -
七彩之城的独特序列(蓝桥杯)
注意,两个子序列被认为是不同的,如果它们选择的下标不同。例如,在序列[1,1] 中,有三个不同的非空子序列:[1](第一个元素),[1](第二个元素)和 [1,1]。在这个序列中,如果一个子序列的所有元素都是不同的,那么小蓝就会认为这个子序列是好的。现在,小蓝想知道,他可以从序列 A 中选择多少个不同的、非空的好子序列。 显然f[1] 只能独自成一个序列,但有多少个a[1] ,就能独自成多少个序列,即cnt(a[1]) 个。代码的目的是解决七彩之城的独特序列问题,即计算给定序列中所有不同好子序列的数量。原创 2024-04-09 20:49:35 · 948 阅读 · 0 评论 -
最大花之能量(蓝桥杯)
他们都非常喜欢花园里的花朵,尤其是那些能量值特别高的花朵。他们认为,只要他们能够找到一种特殊的方法,就可以从花园里的花朵中获得最大的花之能量。在一个神奇的王国里,有一个美丽的花园,里面生长着各种奇妙的花朵。这些花朵都有一个特殊的能力,它们能够释放出一种叫做「花之能量」的神秘力量。你需要编写一个程序,根据给定的花朵能量序列,计算出他们能够获得的最大花之能量的总和。他们的目标是求出这种方法中能够获得的最大花之能量的总和。输出一个整数,表示他们能够获得的最大花之能量的总和。输入的第一行是序列的长度 N。原创 2024-04-09 00:09:53 · 789 阅读 · 1 评论 -
对称排序(蓝桥杯)
如果不是,代码会尝试通过对称交换操作使数组有序。如果所有可能的交换操作都无法使数组有序,则输出"NO"。如果可以通过交换使数组有序,则输出"YES"。该问题描述了一种特殊的排序算法,即通过交换数组中对称位置的元素来实现数组的排序。代码首先读入数组长度和数组元素,然后尝试通过对称交换操作来排序数组。给定一个长度为 N 的数组 A,小蓝希望通过交换对称元素的方式对该数组进行排序。小蓝是一名软件工程师,他正在研究一种基于交换的排序算法,以提高排序的效率。第一行包含一个整数 N,表示数组 A 的长度。原创 2024-04-08 18:13:22 · 706 阅读 · 0 评论 -
鸡哥的蛋糕大作战(蓝桥杯)
有一天,他想到一个有趣的想法:不同的数字可以代表蛋糕上的洞的数量。鸡哥正在进行一个新的蛋糕制作挑战,他需要在一个给定的数字区间 [A,B] 中,找出一个数字,这个数字的各位数字对应的洞的总数最多。在每次迭代中,程序都会检查当前数字的洞数,如果比之前记录的洞数多,就会更新最大洞数和结果数字。输出一行,包含一个整数,表示在区间 [A,B] 中,各位数字对应的洞的总数最多的数字。在区间 [10,100] 中,数字 88 的各位数字对应的洞的总数最多,为 4 个洞。函数,它计算一个整数中的“洞”数,与主函数。原创 2024-04-08 18:05:52 · 435 阅读 · 0 评论 -
鸡哥的奇特密码(蓝桥杯)
在一次偶然的机会中,他发现了一份神秘的文档,文档上的密码只有字母 L 和 Q。经过仔细观察,鸡哥发现这不是一份普通的密码,它遵循着一个特殊的规则——任何两个相邻的 L 都会被解密成一个 L。这段代码实现了鸡哥的奇特密码的解密过程,通过逐个检查输入字符串中的字符并根据规则确定是否输出字符。请你帮助鸡哥解密这份神秘的文档,找出经过尽可能多次解密操作后的密码。输出的第一行包含一个字符串,表示经过尽可能多次解密操作后的密码。输入的第一行包含一个字符串 S,表示需要解密的密码。字符,该程序将只输出第一个。原创 2024-04-08 18:01:25 · 515 阅读 · 0 评论 -
小蓝的决议(蓝桥杯)
读取测试用例的数量,然后对于每个测试用例,读取议会成员总数和赞成决议的成员数。接下来的每一行代表一个测试用例,每行包含两个用空格分隔的整数 N 和 X,分别表示议会中的成员总数和赞成决议的成员数。否则,请输出 “NO”。测试用例 2: 由于赞成决议的成员少于半数,因此决议未通过,输出 “NO”。测试用例 3: 由于超过半数的成员赞成决议,因此决议通过,输出 “YES”。测试用例 1: 由于半数成员赞成决议,因此决议通过,输出 “YES”。测试用例 4: 由于所有成员都反对决议,决议未通过,输出 “NO”。原创 2024-04-08 17:57:47 · 306 阅读 · 0 评论 -
扫地机器人(蓝桥杯)
最终找到的最小时间x是满足所有方格至少被清扫一次且机器人能够返回出发点的最小时间。在上图所示的例子中,最少花费时间是 6。第一台路线:2-1-2-3-4-3-2,清 扫了 1、2、3、4 号区域。首先这题需要找到最少花费时间,那么我们先二分机器人的扫地范围,最小为0,最大为n,一旦所有机器人能扫完全程,说明该值是符合条件的,然后二分缩小范围,直到找出最小的值,刚好所有机器人能够扫完全程。程序的目的是通过编写一个算法,使得多台扫地机器人能够高效地清扫一个由N个方格区域组成的走廊,并最终返回各自的出发点。原创 2024-04-02 01:00:54 · 2999 阅读 · 10 评论 -
巧克力(蓝桥杯)
而对于保质期为b的巧克力,要快速确定将其放在哪一天吃, 可以维护-一个记录着没有安排巧克力吃的日期的set,这样我们只要在set中二分第一个小于b的日期就可以快速确定了。超市的货架上有很多种巧克力,每种巧克力有自己的价格、数量和剩余的保质期天数,小蓝只吃没过保质期的巧克力,请问小蓝最少花多少钱能买到让自己吃 x 天的巧克力。而如果第1~ b天每天都已经安排好了要吃的巧克力,那该巧克力买了就没有任何意义,我们称其为没用的巧克力。假设我们现在买了一个保质期为b的巧克力,那我们就要尽量将该巧克力放在第b天吃。原创 2024-03-31 16:33:04 · 1019 阅读 · 0 评论 -
第几个幸运数字(蓝桥杯)
这段代码的目的是找出一个给定的整数(在这个例子中是59084709587505)是第几个只包含3, 5, 7作为因子的“幸运数字”。代码的基本思路是生成一个幸运数字的集合,然后计算给定的幸运数字在集合中的位置。这里的幸运数字是指仅包含3、5、7作为因子的数字。小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。输出集合的大小即得到给定的幸运数字是第几个。的大小,这个大小就是小明幸运数字的排名。来存储生成的幸运数字,初始基数。原创 2024-03-31 02:05:06 · 829 阅读 · 0 评论 -
X进制减法(蓝桥杯)
现在有两个 X 进制表示的整数 A 和 B,但是其具体每一数位的进制还不确定,只知道 A 和 B 是同一进制规则,且每一数位最高为 N 进制,最低为二进制。例如说某种 X 进制数,最低数位为二进制,第二数位为十进制,第三数位为八进制,则X 进制数 321 转换为十进制数为 65。当进制为:最低位 2 进制,第二数位 5 进制,第三数位 11 进制时,减法得到的差最小。对于A和B的每一位,计算其最小可能的进制,即该位上数字+1,但不小于2,并存储在数组s中。对于 100% 的数据,2 ≤ N ≤ 1000;原创 2024-03-31 00:58:02 · 1194 阅读 · 0 评论 -
座次问题(蓝桥杯)
函数被调用时,它都会尝试将下一个还未排座的同学放入当前的座位排列中。如果成功找到一个完整的排列,则输出排列并返回以尝试其他可能的组合。这段代码是一个C++程序,其目的是找出所有可能的座位排列给定数量的同学。一行一种情况,每种情况的名字按照报名即输入顺序排序。最后输出各种情况的人名即可,一行一种情况,每种情况的名字按照报名即输入顺序排序。小 A 的学校,老师好不容易解决了蓝桥杯的报名问题,现在老师又犯愁了。老师非常想弄明白最后的排座次的结果是什么样子的,到底有多少种结果。输入第一行包含一个整数 N。原创 2024-03-30 23:27:58 · 461 阅读 · 0 评论 -
公平抽签(蓝桥杯)
输出共若干行,每行包含 m 个字符串,表示该结果被选中到人名(需按字符串的输入顺序大小对结果进行排序)。时,当前路径代表了一个有效的组合,代码会将其打印出来,然后返回上一层继续寻找其他可能的组合。小A的学校,蓝桥杯的参赛名额非常有限,只有 m 个名额,但是共有 n 个人报名。这段代码实现了一个经典的回溯算法,用来解决组合问题。作为老师非常苦恼,他不知道该让谁去,他在寻求一个绝对公平的方式。于是他准备让大家抽签决定,即 m 个签是去,剩下的是不去。个人的组合,并在找到一个有效组合时打印它。原创 2024-03-30 23:12:49 · 440 阅读 · 0 评论 -
扫雷(蓝桥杯)
第 2行到第 n+1 行每行包含 m个整数,相邻整数之间用一个空格分隔。如果对应的整数为 0,表示这一格没有地雷。如果对应的整数为 1,表示这一格有地雷。这个程序基于暴力枚举的方式来计算每个空方格周围的地雷数,对于有地雷的方格直接输出。对于没有地雷的方格,输出这格周围的地雷数量。对于有地雷的方格,输出 9。在一个 n 行 m列的方格图上有一些位置有地雷,另外一些位置为空。请为每个空位置标一个整数,表示周围八个相邻的方格中有多少个地雷。输出 n行,每行 m 个整数,相邻整数之间用空格分隔。原创 2024-03-29 01:16:18 · 385 阅读 · 0 评论 -
穿越雷区(蓝桥杯)
接下来是 n 行,每行有 n 个数据,可能是 A,B,+,- 中的某一个,中间用空格分开。某坦克需要从 A 区到 B 区去(A,B 区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短?已知的地图是一个方阵,上面用字母标出了 A,B 区,其它区都标了正号或负号分别表示正负能量辐射区。X 星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废。输出一个整数,表示坦克从 A 区到 B 区的最少移动步数。第一行是一个整数 n,表示方阵的大小, 4≤n<100。原创 2024-03-29 00:50:28 · 565 阅读 · 0 评论 -
方格分割(蓝桥杯)
首先,从题目入手,一个方格纸分割成两个相同的部分,首先可以想到剪“格子”,但是剪“格子”这种方法不好判断连通的问题,所以应该换一个思路,换成找切割线,由于是两个相同的部分,所以切割线是关于中心点中心对称的,由线再化到点上去,就转化成了遍历点的思路, 我们可以利用深搜(DFS)来遍历寻找切割方法的总数;这段代码通过深度优先搜索(DFS)的方法,从给定的初始点(3,3)开始,探索所有可能的分割6x6方格的方法。由于旋转对称的分割方法在这个问题中被视为相同的解,所以在最后输出结果时,需要将。原创 2024-03-27 23:26:06 · 604 阅读 · 0 评论 -
七段码(蓝桥杯)
这段代码通过二进制的方式来表示每个字符的七段数码管的亮灭状态,然后通过深度优先搜索(DFS)来检查每个可能的组合是否满足题目中的条件(所有发光的二极管是连成一片的)。这段代码的目的是使用广度优先搜索(BFS)来解决一个问题,具体来说,是计算在一个给定的图形(由七个点组成)中,有多少种方式可以使得所有点亮的点连成一片。这段代码的目的是计算可以用七段数码管表示的、所有发光的二极管连成一片的不同字符的数量。例如:b, f 发光,其他二极管不发光则不能用来表达一种字符,因为发光的二极管没有连成一片。原创 2024-03-26 17:33:17 · 858 阅读 · 0 评论 -
迷宫与陷阱(蓝桥杯)
这段代码通过广度优先搜索(BFS)算法,利用队列来探索从起点(左上角)到终点(右下角)的最短路径,同时处理无敌状态和陷阱,从而找出小明离开迷宫的最短步数。此外,有些格子上有陷阱,我们用 ‘X’ 表示,除非小明处于无敌状态,否则不能经过;小明的起始位置在左上角,他需要到达右下角的格子才能离开迷宫,每一步,他可以移动到上下左右相邻的格子中。有些格子是墙壁,小明不能经过,我们用 ‘#’ 表示。处于无敌状态时,可以经过有陷阱的格子,但是不会拆除/毁坏陷阱,即陷阱仍会阻止没有无敌状态的角色经过。原创 2024-03-25 18:35:27 · 825 阅读 · 0 评论 -
跳蚱蜢(蓝桥杯)
通过逐个尝试不同的跳跃方式,并记录每个新状态的最少跳跃次数,当找到目标状态时,其记录的跳跃次数即为所求的最少跳跃次数。这段C++代码是用来解决一个特定的问题:计算把一系列编号为1至8的蚱蜢,从顺时针排列改为逆时针排列(在一个圆圈中,含有一个空盘),至少需要多少次跳跃。请你计算一下,如果要使得蚱蜢们的队形改为按照逆时针排列, 并且保持空盘的位置不变(也就是 1-8 换位,2-7换位,…我们把这些蚱蜢顺时针编号为 1 ~ 8。每只蚱蜢都可以跳到相邻的空盘中, 也可以再用点力,越过一个相邻的蚱蜢跳到空盘中。原创 2024-03-24 17:17:09 · 285 阅读 · 0 评论 -
玩具蛇(蓝桥杯)
在这段代码中,定义了一个 4x4 的方格来模拟题目中的盒子,然后使用深度优先搜索(DFS)算法尝试每种可能的玩具蛇的放置方式。如果两个方案中,存在玩具蛇的某一节放在了盒子的不同格子里,则认为是不同的方案。整个搜索过程会遍历所有的格子作为起始点,并递归地搜索所有可能的路径,直到找到所有可能的放置方案。小蓝还有一个 4×4 的方格盒子,用于存放玩具蛇,盒子的方格上依次标着字母 A 到 P 共 16 个字母。达到 16 时,意味着所有的玩具蛇部分都已放置在方格中,这时就找到了一种有效的放置方案,方案数。原创 2024-03-24 15:26:47 · 518 阅读 · 0 评论 -
分考场(蓝桥杯)
代码首先读入参加考试的人数n和认识关系对数,然后读入每对认识关系并在邻接矩阵g中标记。主要逻辑在dfs函数中,它尝试所有可能的人员分配方案来寻找使用最少考场数的方案。搜索过程中,如果发现当前方案使用的考场数已经达到或超过了之前找到的最小值,则停止继续搜索该路径。当所有人都被成功分配到考场后,会更新最少需要的考场数。以下 m 行每行的格式为:两个整数 ,a,b,用空格分开 ( 1≤a,b≤n )表示第 a 个人与第 b 个人认识。第一行,一个整数 n (1≤n≤100),表示参加考试的人数。原创 2024-03-24 12:01:39 · 482 阅读 · 0 评论 -
迷宫(蓝桥杯)——DFS和BFS
下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方。迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。对于上面的迷宫,从入口开始,可以按DRRURRDDDR的顺序通过迷宫, 一共 10 步。其中D、U、L、R 分别表示向下、向上、向左、向右走。对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式,其使用的步数最少,在步数最少的前提下,请找出字典序最小的一个作为答案。原创 2024-03-21 20:08:20 · 1282 阅读 · 0 评论 -
会议室预约系统优化(蓝桥杯)
这个代码使用了一种称作"差分数组"的技术来高效管理会议室预约的增加和减少。通过在预约开始时增加计数,在预约结束后的下一时刻减少计数,这样就可以通过累加到任何给定时间点的差分值来计算该时间点的总预约次数。这种方法的优点是更新预约状态的操作时间复杂度为O(1),查询操作的时间复杂度为O(m),其中m是对应会议室的预约记录条数,这在大多数情况下要优于直接遍历每个预约记录来计算总预约次数。对于每一个 QUERY 操作,输出一个整数,表示到时间点 t 为止,该会议室被预约了多少次。接下来 q 行,每行描述一个操作。原创 2024-03-16 19:27:56 · 513 阅读 · 0 评论 -
日期问题(蓝桥杯)
令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。首先,定义了一个月份天数的数组,这对于检查一个日期是否有效非常重要,特别是对于2月份,因为它的天数与是否为闰年有关。函数是程序的主体,它首先读入一个日期,然后遍历所有可能的年份(从1960年到2059年),对于每一个年份,它会使用。输出若干个不相同的日期,每个日期一行,格式是 “yyyy−MM−dd”。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。原创 2024-03-13 20:31:02 · 461 阅读 · 0 评论 -
K倍区间(蓝桥杯)
通过这种方式,我们可以在遍历数组的同时,累计找到的K倍区间的数量。这种方法是非常高效的,因为它只需要一次遍历(O(N)时间复杂度),而不是对每个可能的子序列都进行检查(这将需要O(N^2)时间复杂度)。因为前缀和数组是从下标1开始的,所以在没有任何元素的情况下,我们可以认为有一个和为0的前缀和(也就是说,我们从数组的开始处就有一个零长度的前缀和)。有相同的余数,这意味着从那个前缀和的下一个位置到当前位置r的子序列和是K的倍数。在这个问题中,我们要计算子序列和为K的倍数的区间数量。,那么x是K的倍数。原创 2024-03-08 19:51:18 · 1029 阅读 · 0 评论 -
大学里到树木要打药(蓝桥杯)
对于每个区间,我们在区间的起始点累加花费c,而在区间的终止点的下一个位置减去花费c。这样,差分数组b中的每个元素表示该位置的花费变化量。对于树的药是成区间分布,比如 3∼5 号的树靠近下水道,所以他们要用驱蚊虫的药,20∼26 号的树,他们排水不好,容易涝所以要给他们用点促进根系的药 ⋯诸如此类。接下来的 M 行每行包含三个不同的整数,用一个空格隔开,分别表示一个区域的起始点 L 和终止点 R 的坐标,以及花费。教室外有 N 棵树(树的编号从 0∼N−1),根据不同的位置和树种,学校要对其上不同的药。原创 2024-03-07 17:21:56 · 417 阅读 · 0 评论 -
大学里的树木要维护(蓝桥杯)
在本题中,我们可以将树木的位置看作一条直线,使用前缀和数组来记录每个位置的维护费用的累计和。首先,读入树木的总数n和区间的数目m。每个位置的维护费用的累计和等于前一个位置的累计和加上该位置的维护费用。对于每个区间,我们输出该区间内的维护开销,即维护费用的前缀和数组中终止点的值减去起始点之前的值。接下来的 M 行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点 L 和终止点 R 的坐标。教室外有 N 棵树(树的编号从 1∼N),根据不同的位置和树种,学校已经对其进行了多年的维护。原创 2024-03-07 17:21:35 · 366 阅读 · 0 评论 -
乘积尾零(蓝桥杯)
在C++中,要求出整数乘积的末尾有多少个零,实际上就是计算乘积中10的因子的个数。而10可分解为2和5的乘积,因为在任意一个乘积中2的因子数量总是多于5的因子数量,所以只需要计算5的因子的个数即可。在这个乘积中,我们有4个2和3个5。因此,乘积末尾将有三个零。末尾零的数量是由乘积中5的因数的数量决定的,并且确保有足够的2与之匹配。在我们的计算中,我们通常会忽略2的因子,因为它们通常足够多,不会限制末尾零的数量。如下的 10 行数据,每行有 10 个整数,请你求出它们的乘积的末尾有多少个零?原创 2024-02-29 21:08:19 · 576 阅读 · 0 评论 -
分巧克力(蓝桥杯)
如果使用二分算法,那么切割的巧克力边长依题意最小为1,最大为最大巧克力的最小边,因此l=1,r=最大巧克力的最小边,因为要求出输出切出的正方形巧克力最大可能的边长,所以使用二分查找中的右查找得到最大值。ps:在求r时我刚开始做的时候求的是所有巧克力的最小边,但这样子是不对的,因为当总巧克力足够多时,例如100块,里面的数据可能会有2。1的小巧克力,这样的数据可以舍去,并不影响求输出切出的正方形巧克力,所以r的值应该为最大巧克力的最小边(所有巧克力的最小边长)6的巧克力,能切割出的块数=5/2。原创 2024-02-29 14:43:30 · 597 阅读 · 0 评论 -
直线(蓝桥杯)
在平面直角坐标系中,两点可以确定一条直线。如果有多点在一条直线上, 那么这些点中任意两点确定的直线是同一条。给定平面上 2 × 3 个整点(x,y)∣0≤x原创 2023-11-29 01:42:42 · 910 阅读 · 0 评论