翻转链表(就地逆置原理) 的操作顺序交换,即先删掉结点信息,再进行结点前置操作就可以用pre->next记录下nod的下一个结点的信息了。2、将结点前置过程中,涉及到了删除结点的操作(删除原来位置),故需要用pre结点记录当前结点的前一个结点。(head记录最前面的结点,pre记录上一个结点,nod记录当前的结点,temp记录下一个结点)3、将pre->next指向temp,从而删除原来位置的nod结点:pre->next=temp。1、记录nod的下一个结点信息:temp=nod->next。遍历结点的同时不断将结点前置。
蓝桥杯2023年-管道(二分+区间合并) 有一根长度为 len 的横向的管道,该管道按照单位长度分为 len 段,每一段的中央有一个可开关的阀门和一个检测水流的传感器。一开始管道是空的,位于 Li 的阀门会在 Si 时刻打开,并不断让水流入管道。对于位于 Li 的阀门,它流入的水在 Ti (Ti ≥ Si) 时刻会使得从第 Li−(Ti−Si) 段到第 Li + (Ti − Si) 段的传感器检测到水流。求管道中每一段中间的传感器都检测到有水流的最早时间。
蓝桥杯2023年-松散子序列(dp) 给定一个仅含小写字母的字符串 s ,假设 s 的一个子序列 t 的第 i 个字符 对应了原字符串中的第 pi 个字符。我们定义 s 的一个松散子序列为:对于 i > 1 总是有 pi − pi−1 ≥ 2。设一个子序列的价值为其包含的每个字符的价值之和 ( a ∼ z 分别为 1 ∼ 26 )。求 s 的松散子序列中的最大价值。
蓝桥杯2023年-平均(小根堆) 有一个长度为 n 的数组(n 是 10 的倍数),每个数 ai 都是区间 [0, 9] 中的整数。小明发现数组里每种数出现的次数不太平均,而更改第 i 个数的代价为bi,他想更改若干个数的值使得这 10 种数出现的次数相等(都等于n/10),请问代价和最少为多少。
蓝桥杯2023年-阶乘的和(数学推理,C++) 给定 n 个数 Ai,问能满足 m!为∑ni=1(Ai!) 的因数的最大的 m 是多少。其中 m!表示 m 的阶乘,即 1 × 2 × 3 × · · · × m。
蓝桥杯2023年-三国游戏(贪心) 小蓝正在玩一款游戏。游戏中魏蜀吴三个国家各自拥有一定数量的士兵X, Y, Z (一开始可以认为都为 0 )。游戏有 n 个可能会发生的事件,每个事件之间相互独立且最多只会发生一次,当第 i 个事件发生时会分别让 X, Y, Z 增加Ai , Bi ,Ci。当游戏结束时 (所有事件的发生与否已经确定),如果 X, Y, Z 的其中一个大于另外两个之和,我们认为其获胜。例如,当 X > Y + Z 时,我们认为魏国获胜。小蓝想知道游戏结束时如果有其中一个国家获胜,最多发生了多少个事件?
树上差分原理 表示为后面的区间都减去权值,为后面不应该受影响的区间抵消掉该影响。最后再做一个前缀和,则就能将差分值转化为每个点在修改后的权值了。那么两结点的"区间修改"也就是“两结点的差分值各自+1,最近公共祖先的差分值每次-1(总共减2)"常用在线性修改区间的值,我们通过修改区间边界的值,”可以理解为“结点与其所有子树的权值之和”。树上差分常用在对路径权值的快速修改操作。则前缀和就是该结点的入边的权值。表示给后面的区间都加上权值,那么将线性差分转化为。我们将线性差分中的"
蓝桥杯2023年-砍树(dfs,树上差分) 给定一棵由 n 个结点组成的树以及 m 个不重复的无序数对 (a1, b1), (a2, b2),. . . , (am, bm),其中 ai 互不相同,bi 互不相同,ai ≠ bj(1 ≤ i, j ≤ m)。小明想知道是否能够选择一条树上的边砍断,使得对于每个 (ai , bi) 满足 ai和 bi 不连通,如果可以则输出应该断掉的边的编号(编号按输入顺序从 1 开始),否则输出 -1.
蓝桥杯2023年-景区导游(倍增法求LCA) 某景区一共有 N 个景点,编号 1 到 N。景点之间共有 N − 1 条双向的摆渡车线路相连,形成一棵树状结构。在景点之间往返只能通过这些摆渡车进行,需要花费一定的时间。小明是这个景区的资深导游,他每天都要按固定顺序带客人游览其中 K 个景点:A1, A2, . . . , AK。今天由于时间原因,小明决定跳过其中一个景点,只带游客按顺序游览其中 K − 1 个景点。
蓝桥杯2023年-整数删除(链表,小根堆) 给定一个长度为 N 的整数数列:A1, A2, . . . , AN。你要重复以下操作 K 次:每次选择数列中最小的整数(如果最小值不止一个,选择最靠前的),将其删除。并把与它相邻的整数加上被删除的数值。输出 K 次操作后的序列。
蓝桥杯2023年-岛屿个数(dfs,染色法) 小蓝得到了一副大小为 M × N 的格子地图,可以将其视作一个只包含字符‘0’(代表海水)和 ‘1’(代表陆地)的二维数组,地图之外可以视作全部是海水,每个岛屿由在上/下/左/右四个方向上相邻的 ‘1’ 相连接而形成。
蓝桥杯2023年-接龙数列(dp) 对于一个长度为 K 的整数数列:A1, A2, . . . , AK,我们称之为接龙数列当且仅当 Ai 的首位数字恰好等于 Ai−1 的末位数字 (2 ≤ i ≤ K)。例如 12, 23, 35, 56, 61, 11 是接龙数列;12, 23, 34, 56 不是接龙数列,因为 56的首位数字不等于 34 的末位数字。所有长度为 1 的整数数列都是接龙数列。现在给定一个长度为 N 的数列 A1, A2, . . . , AN,请你计算最少从中删除多少个数,可以使剩下的序列是接龙序列?
蓝桥杯2023年-飞机降落(暴力枚举,next_permutation) N 架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 Ti 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 Di 个单位时间,即它最早可以于 Ti 时刻开始降落,最晚可以于 Ti + Di 时刻开始降落。降落过程需要 Li个单位时间。一架飞机降落完毕时,另一架飞机可以立即在同一时刻开始降落,但是不能在前一架飞机完成降落前开始降落。请你判断 N 架飞机是否可以全部安全降落。
蓝桥杯2023年-冶炼金属(数学推理) 小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V,V 是一个正整数,这意味着消耗 V 个普通金属 O 恰好可以冶炼出一个特殊金属 X,当普通金属 O 的数目不足 V 时,无法继续冶炼。现在给出了 N 条冶炼记录,每条记录中包含两个整数 A 和 B,这表示本次投入了 A 个普通金属 O,最终冶炼出了 B 个特殊金属 X。每条记录都是独立的,这意味着上一次没消耗完的普通金属 O 不会累加到下一次的冶炼当中。
蓝桥杯2023年-买瓜(dfs,类型转换同样耗时) 小蓝正在一个瓜摊上买瓜。瓜摊上共有 n 个瓜,每个瓜的重量为 Ai。小蓝刀功了得,他可以把任何瓜劈成完全等重的两份,不过每个瓜只能劈一刀。小蓝希望买到的瓜的重量的和恰好为 m。请问小蓝至少要劈多少个瓜才能买到重量恰好为 m 的瓜。如果无论怎样小蓝都无法得到总重恰好为 m 的瓜,请输出 −1。
蓝桥杯2023年-颜色平衡树(哈希表,dfs,map作返参) 给定一棵树,结点由 1 至 n 编号,其中结点 1 是树根。树的每个点有一个颜色 Ci。如果一棵树中存在的每种颜色的结点个数都相同,则我们称它是一棵颜色平衡树。求出这棵树中有多少个子树是颜色平衡树。