- 博客(32)
- 收藏
- 关注
原创 【888题竞赛篇】第十二题,2024ICPC网络赛第二场-游戏(Game)
本文详细分析了一个基于概率和递归关系的游戏问题,探讨了如何利用辗转相减与辗转相除的思想高效计算 Alice 赢得整个游戏的概率。通过递归函数结合快速幂算法,实现了在高效时间复杂度下处理多个测试用例的需求。关键点总结问题建模:将游戏的筹码变动过程建模为递归关系,明确边界条件。数学原理:借鉴辗转相除法的思想,通过一次性处理多个减法操作,加速递归过程。算法优化:使用快速幂算法和模逆元计算,确保在大数情况下的高效计算。多语言实现。
2024-09-23 17:47:00
1052
原创 【888题竞赛篇】第七题,2023ICPC沈阳-羊吃狼(Sheep Eat Wolves)
这个算法通过广度优先搜索(BFS)和动态规划(DP)的结合,能够有效地解决将羊安全运输到对岸的问题。时间复杂度为Ox×y×p2Ox×y×p2,空间复杂度为Ox×yOx×y,使得它在给定的输入范围内(xy≤100xy≤100)能够在合理的时间内运行。算法确保了所有可能的运输方案都被探索,并找到最优解。如果无法安全运输所有羊,则返回−1-1−1。
2024-09-09 11:24:57
939
原创 【888题秋招篇】剑指大厂offer第十三题,带你用数学思维杀米哈游校招真题-房屋,斩获大厂年薪60wOffer
这道题目通过对数学思维的巧妙应用,成功将问题转化为区间上下界的求解问题。通过一次线性遍历,我们能够有效地计算出所有可能的房屋高度组合数量。关键在于根据累积和的奇偶性对上下界进行动态调整,最终通过结果公式r−l−1r - l - 1r−l−1计算出满足条件的解的数量。由于时间复杂度为OnO(n)On,空间复杂度为O1O(1)O1,该算法能够在大规模数据下高效运行,非常适合处理上限为10510^5105的问题规模。
2024-08-27 19:06:33
1228
原创 【蓝桥杯冲刺省一,省一看这些就够了-C++版本】蓝桥杯C++字符串及相关练习题
从第一个字符开始逐位比较,第一个字符不相等,谁的ASCII码值小谁的字典序就小。若第一个相等,继续逐位比较后续字符。比较到字母c < 字母d,所以第一个字符串。若逐位比较都相等,但其中一个没有后续的字符了,则较短的串。可以对字符串进行字典序排序,字符按ASCII码值由小到大排列。什么是字典序:所谓字典序就是以ASCII码排序。主要是用在字串分割,可以先用。(1)比如两个字符串。
2024-08-26 18:50:29
356
原创 【888题竞赛篇】第六题,2023ICPC济南-来自知识的礼物(Gifts from Knowledge)
这道题是一个涉及稀疏矩阵和并查集算法的高级问题,要求通过选择矩阵的某些行进行反转操作,使得矩阵的每一列最多只有一个1。通过图论和并查集的知识,可以将问题建模为行之间的关系问题,并最终确定满足条件的不同方案数。考虑到数据范围巨大,算法的时间和空间复杂度都需要进行优化。题目提供了多个测试用例,且需要对结果进行取模计算以避免超出数据范围。题目中的挑战在于如何高效地处理行与行之间的转换关系。通过分析,可以发现如果两行在反转后相同或具有类似的结构,那么它们可以归为一个集合。
2024-08-26 18:45:06
1141
原创 【蓝桥杯冲刺省一,省一看这些就够了-C++版本】蓝桥杯C++STL及相关练习题
提供一对一的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。map 中的第一个值称为关键字(key),每个关键字只能在 map 中出现一次,第二个称为该关键字的值(value),可以重复。将两个变量成对组合打包在一起的数据类型,可以理解为C++内置的保存两个元素(类型可以自定义)的结构体常见的应用就是保存坐标等。的容器,里面的元素都是排序好的,支持插入、删除、查找等操作,就像一个集合。其比较规则是:先比较第一个元素,如果第一个元素值相等,再比较第二个元素。
2024-08-24 19:12:16
1624
2
原创 【888题秋招篇】剑指大厂offer第十二题,带你用数学思维秒杀米哈游校招真题-棋盘,斩获大厂年薪60wOffer
这道题目考察的是在具有循环边界的棋盘上进行最短路径的计算问题。由于棋盘的特殊性质,即在水平方向和竖直方向上都存在循环连接,这使得从一个位置移动到另一个位置时可以选择两种路径:直接路径和穿越边界的路径。因此,问题的核心在于计算两点之间的最短距离时,如何合理利用循环边界。解决方案通过数学方法,基于坐标差值计算最短距离。对于每个方向(横向或纵向),直接距离和跨越边界的距离取最小值,然后将两个方向的最小值相加得到总步数。由于问题规模较大(1≤nm≤1091≤nm≤109。
2024-08-24 19:02:44
1204
原创 【蓝桥杯冲刺省一,省一看这些就够了-C++版本】蓝桥杯C++字符串及相关练习题
提供一对一的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。map 中的第一个值称为关键字(key),每个关键字只能在 map 中出现一次,第二个称为该关键字的值(value),可以重复。将两个变量成对组合打包在一起的数据类型,可以理解为C++内置的保存两个元素(类型可以自定义)的结构体常见的应用就是保存坐标等。的容器,里面的元素都是排序好的,支持插入、删除、查找等操作,就像一个集合。其比较规则是:先比较第一个元素,如果第一个元素值相等,再比较第二个元素。
2024-08-22 18:42:41
968
原创 【蓝桥杯冲刺省一,省一看这些就够了-C++版本】蓝桥杯日期时间问题模板及相关练习题
如果只是为了应付这道题目计算器或者手算一下都可以,但如果把题目扩展为任意的两个日期之间间隔多少天我们又该如何去做呢。 2.转化成秒之后,先需要对一天有多少秒进行取余,这样剩下的时间肯定不到一天才能进行时间计算,也就是。 其实思路也很简单从开始日期一直加1,直到与最终日期相等为止,在上一题的代码基础上略作修改即可。 我们此时计算的不是天数,但我们知道一天有多少分钟,所以累加的时候换成。(3)2月要分平年闰年,闰年满30天进1月,平年满29天进1月。直接模拟日期的计算与进位,我们假设年份用。
2024-08-22 18:38:06
1002
1
原创 【蓝桥杯冲刺省一,省一看这些就够了-C++版本】蓝桥杯输入输出问题相关模板以及练习题
是 C++ 提供的函数输入输出方便但速度较慢,所以需要用指令进行输入输出加速,利用while循环进行读入,但输入的时候你可能发现程序无法退出,这时候需要输入。我们在输入输出的时候要遵守题目的输入输出格式规范常见的有以下几种输入方式。,输入整个字符串,然后只要不是连续出现的空格或者非空格字符,就输出。函数将字符串转化为了数字,如果想将数字转化为字符串可以使用。,让你统计这些数字中有有多少个偶数,和所有奇数的和。一行,若干个数字,最后一个数字是。第一行是这些数字中的偶数的个数。我们在读入字符串的时候如果用。
2024-08-21 10:38:24
876
原创 【888题秋招篇】剑指大厂offer第十一题,带你用数学和枚举秒杀米哈游校招真题-史莱姆,斩获大厂年薪60wOffer
本题通过模拟史莱姆的跳跃过程,并通过数组的累加和判断来计算每一秒无史莱姆的格子数量。算法实现简单且高效,适用于大规模输入。
2024-08-21 10:31:37
1095
原创 【888题竞赛篇】第五题,2023ICPC澳门-传送(Teleportation)
本题通过将问题转化为图论中的最短路径问题,并使用 Dijkstra 算法来高效求解。算法的关键在于合理构建图结构,并充分考虑不同操作的边权关系。通过引入虚拟节点,处理特殊情况,使得问题的求解更加简洁明了。这种图论思想在处理类似问题时具有广泛应用,特别是在路径规划与最优决策问题中。
2024-08-20 22:24:49
1884
原创 【蓝桥杯冲刺省一,省一看这些就够了-Java版本】蓝桥杯编程杂项
类是Java中的一种重要的数据结构,用于表示对象的属性和行为。类可以看作是一种用户自定义的数据类型,可以包含各种类型的变量(成员变量)和方法(成员方法)。 数组标记是指用数组去存储问题中的输入数据或者中间数据,比如计数、判断有无,本质上是用空间换时间,最常见的好处就是降低代码的时间复杂度,不容易出现超时问题。是不是后面没有不同的字符,我们发现我们只会在字符串不相等的时候才输出,所以最后一个字符。 (2)如果和后面一个字符不相等,输出字符以及计数的变量,并将计数的变量清空为1。,用于显示对象的信息。
2024-08-20 11:02:19
608
原创 【888题竞赛篇】第四题,2023ICPC合肥-送外卖(Takeout Delivering)
这道题目考察了在无向图中寻找路径时,如何在兼顾多条边的权重组合的情况下找到最优解。我们通过 Dijkstra 算法计算出从起点和终点到其他节点的最大边权,然后结合枚举的方式找到最优路径。这种思路避免了暴力求解所有路径的高时间复杂度,并通过有效的预处理和枚举策略,将问题转化为针对特定边权的二次组合问题。算法的关键在于利用 Dijkstra 的最短路径特性,在确保计算效率的前提下,准确找到最大边和次大边的组合。该方法在处理大规模图的情况下依然能够有效运行,适用于边数较多的场景。
2024-08-19 18:09:40
1536
1
原创 【蓝桥杯冲刺省一,省一看这些就够了-Java版本】蓝桥杯字符串问题相关模板以及练习题
从第一个字符开始逐位比较,第一个字符不相等,谁的ASCII码值小谁的字典序就小。若第一个相等,继续逐位比较后续字符。若逐位比较都相等,但其中一个没有后续的字符了,则较短的串。方法,我们可以检查是否还有下一个元素可供读取。可以对字符串进行字典序排序,字符按ASCII码值由小到大排列。类提供了一种简单的方式来扫描和解析基本数据类型和字符串。方法来判断下一个元素是整数还是字符串,然后分别使用。,并使用它从字符串中逐个读取数据。在这个示例中,我们首先定义了一个字符串。方法来读取整数和字符串。(1)比如两个字符串。
2024-08-19 10:14:36
577
原创 【蓝桥杯冲刺省一,省一看这些就够了-Java版本】蓝桥杯日期问题相关模板以及练习题
这些类提供了丰富的方法和功能,可以满足大多数日期和时间处理的需求。通过这些类,可以方便地进行日期和时间的操作、计算、比较和格式化。 如果只是为了应付这道题目计算器或者手算一下都可以,但如果把题目扩展为任意的两个日期之间间隔多少天我们又该如何去做呢。 2.转化成秒之后,先需要对一天有多少秒进行取余,这样剩下的时间肯定不到一天才能进行时间计算,也就是。 我们此时计算的不是天数,但我们知道一天有多少分钟,所以累加的时候换成。它提供了获取年、月、日以及日期之间比较的方法。
2024-08-18 12:46:43
1190
原创 【888题竞赛篇】第三题,2016ICPC大连-Detachment
本算法通过预处理和二分查找巧妙地解决了大规模输入下的线段分割问题。预处理部分将复杂计算转化为查表操作,显著提高了查询效率;而二分查找则在给定长度下快速定位合适的分割点。通过引入模逆元解决除法问题,使得算法能够在模109710^9 + 71097下进行精确计算。整体时间复杂度和空间复杂度都经过优化,适合处理多组大数据测试用例。
2024-08-18 12:44:39
1169
原创 【888题竞赛篇】第二题,2014ICPC北京-狼
本题的关键在于如何通过动态规划优化求解杀死狼的顺序,以获得最小的伤害值。我们使用了区间DP的思想,通过构建二维DP数组,逐步求解子问题,最终得到整个区间的最优解。区间DP通常用于解决涉及多个子问题组合的问题,特别是在问题中有顺序和区间划分的情况。本题的难点在于在每个区间中确定最优的杀死顺序,并正确处理相邻狼之间的加成关系。对于最大规模为n≤200n \leq 200n≤200的问题,On3O(n^3)On3。
2024-08-17 20:33:17
952
原创 【蓝桥杯冲刺省一,省一看这些就够了-Java版本】模拟基础-输入输出
我们在输入输出的时候要遵守题目的输入输出格式规范常见的有以下几种输入方式。利用while循环加if分支语句进行判断当输入的数字为。,让你统计这些数字中有有多少个偶数,和所有奇数的和。函数求出字符串长度,for循环遍历非空格的字符。下面提供了java数字转字符串的程序。一行,若干个数字,最后一个数字是。给你若干个数字,最后一个数字是。第一行是这些数字中的偶数的个数。第二行是这些数字中奇数的总和。的时候break跳出循环。读入空格,利用字符串的。
2024-08-17 12:40:36
508
原创 【888题秋招篇】剑指大厂offer第十题,带你用思维秒杀米哈游校招真题-子序列,斩获大厂年薪60wOffer
本题的解决方案通过统计字符频率和过滤字符串进行比对,设计上采用了高效的线性扫描算法,使得每次查询都可以在线性时间内完成。总体时间复杂度为Oq×nOq×n,空间复杂度为OnO(n)On。该算法的实现不仅能够正确处理题目中的各种边界情况,还具有较高的可读性和扩展性,适合在大规模输入数据下运行。本题的难点在于理解如何通过字符频率和顺序判断两个字符串能否通过有限操作相互转化。代码的逻辑清晰,思路明确,能够应对复杂度较高的情况,是一个优秀的字符串操作问题的解决方案。
2024-08-17 10:48:25
1149
原创 【888题竞赛篇】第一题,2023睿抗-出院
该问题的关键在于如何高效地对饮料名称进行分割和查找。通过使用哈希表,我们能够在常数时间内查找已知饮料及其对应等级。在处理待定级的饮料时,采用双指针将名称从不同位置进行分割,并通过哈希表判断分割后的两部分是否均在已知饮料中存在,这样的方式有效地减少了时间复杂度。算法的整体效率相对较高,适用于输入规模较大的场景。即使在最坏情况下,算法的时间复杂度也能够控制在OM×LOM×L,而哈希表的使用确保了查找操作的高效性。
2024-08-16 10:31:06
1288
原创 【888题秋招篇】剑指大厂offer第七题,带你用枚举优化方法秒杀腾讯校招真题-最大公约数,斩获大厂年薪60wOffer
这道题目要求通过最多kkk次操作来最大化两个整数aaa和bbb的最大公约数(GCD)。为了实现这一目标,算法采用了枚举优化的策略,通过遍历每一种可能的操作组合(即aia + iai和bk−ibk−i),计算相应的 GCD,并选择最大的结果作为最终答案。在算法分析中,我们得出了时间复杂度为OT×k×logminabOT×k×logminab))),其中TTT是测试用例的数量,kkk是允许的操作次数,log。
2024-08-15 12:05:32
904
原创 【888题秋招篇】剑指大厂offer第九题,带你用贪心秒杀米哈游校招真题-交换字符,斩获大厂年薪60wOffer
时间复杂度:OnO(n)On,主要由遍历字符串决定。空间复杂度:OnO(n)On,主要由存储输入字符串决定。这个算法能在线性时间内高效地完成任务,并且空间使用也相对合理,适合处理最大长度为 200,000 的字符串。
2024-08-15 11:51:04
1029
原创 【888题秋招篇】剑指大厂offer第八题,带你用深度优先搜索秒杀米哈游校招真题-RGB矩阵,斩获大厂年薪60wOffer
这道题目通过模拟小明在面对颜色区分困难时的视角变化,考察了我们对于图遍历和连通块统计的理解。题目中的核心是通过深度优先搜索(DFS)算法遍历整个矩阵,以统计连通块的数量。为了模拟小明的视觉缺陷,我们将绿色(G)转换为蓝色(B),从而使得小明视角下的连通块数量减少。最后通过两次连通块统计,我们计算出实际连通块数量与小明视角下连通块数量的差值,进而得到答案。这道题目较好地结合了图论中的基础概念(如连通块)和搜索算法(DFS),其解决思路简洁明了,适合在复杂度较大的矩阵中应用。
2024-08-15 11:41:23
919
原创 【888题秋招篇】剑指大厂offer第六题,带你用数学思维秒杀腾讯校招真题-编程乐趣,斩获大厂年薪60wOffer
奇数的数量无需修改,但如果当前的奇数数量超过一半,我们需要将多余的奇数变为偶数。本题要求将一个包含正整数的数组通过最少的操作转变为奇数和偶数数量各占一半的数组。如果数字是偶数,则进一步计算将其转换为奇数所需的最小操作次数(即每次将数字除以2,直到它变为奇数为止,计算除以2的次数)。对于偶数部分,我们还需要计算将其转变为奇数所需的最小操作次数。对偶数进行排序,选择最少次数的操作将偶数转变为奇数,直到奇偶数量达到要求。遍历数组统计奇数和偶数的数量,以及计算每个偶数转变为奇数所需的最小操作次数,时间复杂度为。
2024-08-14 10:45:34
994
原创 【888题秋招篇】剑指大厂offer第五题,带你用数据结构思维秒杀OPPO校招真题-严格递增三元组,斩获大厂年薪60wOffer
这个题目要求我们在一个长度为nnn的数组中,找到所有符合特定条件的三元组ijk(i, j, k)ijk,即1≤ijk≤n1≤ijk≤n且aiakaj1aiakaj1。为了高效地解决这个问题,我们采用了哈希表和一次遍历的算法来进行处理。该算法通过两个哈希表来记录和统计符合条件的元素组合情况。我们依次遍历数组中的每个元素,通过更新哈希表中的计数信息,逐步累积得到最终满足条件的三元组数量。
2024-08-14 10:34:34
718
原创 【888题秋招篇】剑指大厂offer第四题,带你用数学思维秒杀米哈游校招真题-玫瑰鸭,斩获大厂年薪60wOffer
该算法的时间复杂度和空间复杂度均为O1O(1)O1,这是因为算法仅仅是对输入的三个变量进行几次简单的数学运算,不涉及到任何复杂的操作。这使得算法非常高效,可以在极短的时间内处理输入并得出结果,即使输入的范围达到最大值(即10910^9109。
2024-08-14 10:24:06
758
原创 【888题秋招篇】剑指大厂offer第一题,带你用拓扑排序广度优先搜索秒杀2024考研408真题-唯一拓扑排序,斩获大厂年薪60wOffer
在拓扑排序过程中,如果存在多个顶点的入度为0,那么就会存在多种可能的拓扑排序方式,因此我们需要检查图是否能够保证在任何情况下都只有一种合法的拓扑排序方式。在执行拓扑排序时,维护一个队列,每次从队列中取出一个入度为0的顶点,并将其相邻的顶点的入度减1。对于一个有向图,如果存在某个顶点有多个入度为0的顶点,则可以选择不同的顶点作为拓扑排序的起点,导致存在多种可能的拓扑排序。如果在执行拓扑排序时发现队列中的元素数目大于1,则说明存在多个入度为0的顶点,这会导致拓扑排序的多样性,从而图中存在多种拓扑排序。
2024-08-13 11:46:37
789
原创 【888题秋招篇】剑指大厂offer第二题,带你用差分快速幂秒杀美团校招真题-小美与数组,斩获大厂年薪60wOffer
这道题目通过差分数组和快速幂的结合,考察了对大规模数据的高效处理能力。差分数组帮助我们快速标记和计算每个元素的操作次数,而快速幂则用于计算大指数下的幂次结果,避免了直接模拟带来的时间复杂度过高的问题。通过取模操作,确保了最终结果不会超出限制范围。整体来看,这道题目不仅考察了算法设计,还需要一定的数学基础,在处理类似大规模数据操作的问题时,能够提供有效的思路和方法。
2024-08-13 11:29:13
1107
原创 【888题秋招篇】剑指大厂offer第三题,带你用异或思维秒杀腾讯校招真题-01异或,斩获大厂年薪60wOffer
的数量能否通过操作完全抵消,使得只剩下同一种字符。的数量中是否至少有一个是偶数。题目要求判断是否存在一种方式,使得字符串。的数量,然后判断其奇偶性来决定输出结果。通过相邻字符的翻转操作,最终变为全。翻转操作可以将任意两个相邻的字符。互换,因此问题实质是看字符串中的。因此,问题归结为判断字符串中。通过遍历字符串,统计。
2024-08-13 11:10:29
706
原创 前缀和算法:优化数组求和的利器
在数据结构与算法的世界中,**前缀和算法(Prefix Sum Algorithm)** 是一种简单而强大的技术,广泛应用于数组或序列的数据处理。假设我们有一个数组 `nums`,我们需要构建它的前缀和数组,并利用该数组快速计算任意区间 `[l, r]` 的和。通过构建前缀和数组,原本 O(n) 时间复杂度的区间求和操作可以优化为 O(1),这使得前缀和算法在处理大规模数据时尤其高效。在寻找最大子数组和的问题中,前缀和算法可以帮助快速判断不同子数组的和,从而优化解法。2. **子数组的最大和问题**
2024-08-11 19:50:19
557
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人