自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 收藏
  • 关注

原创 翻转链表(就地逆置原理)

的操作顺序交换,即先删掉结点信息,再进行结点前置操作就可以用pre->next记录下nod的下一个结点的信息了。2、将结点前置过程中,涉及到了删除结点的操作(删除原来位置),故需要用pre结点记录当前结点的前一个结点。(head记录最前面的结点,pre记录上一个结点,nod记录当前的结点,temp记录下一个结点)3、将pre->next指向temp,从而删除原来位置的nod结点:pre->next=temp。1、记录nod的下一个结点信息:temp=nod->next。遍历结点的同时不断将结点前置。

2024-03-18 18:29:47 523

原创 索引优先队列代码模板C++

【代码】索引优先队列代码模板C++

2024-03-18 15:39:21 395

原创 三大排序(插入排序,选择排序,冒泡排序)

原理:将第i个数通过不断与前面大于他的数交换,直到插入到前面合适的位置。代码。

2024-03-17 20:21:29 645

原创 蓝桥杯2023年-管道(二分+区间合并)

有一根长度为 len 的横向的管道,该管道按照单位长度分为 len 段,每一段的中央有一个可开关的阀门和一个检测水流的传感器。一开始管道是空的,位于 Li 的阀门会在 Si 时刻打开,并不断让水流入管道。对于位于 Li 的阀门,它流入的水在 Ti (Ti ≥ Si) 时刻会使得从第 Li−(Ti−Si) 段到第 Li + (Ti − Si) 段的传感器检测到水流。求管道中每一段中间的传感器都检测到有水流的最早时间。

2024-03-16 21:04:37 396

原创 蓝桥杯2023年-松散子序列(dp)

给定一个仅含小写字母的字符串 s ,假设 s 的一个子序列 t 的第 i 个字符 对应了原字符串中的第 pi 个字符。我们定义 s 的一个松散子序列为:对于 i > 1 总是有 pi − pi−1 ≥ 2。设一个子序列的价值为其包含的每个字符的价值之和 ( a ∼ z 分别为 1 ∼ 26 )。求 s 的松散子序列中的最大价值。

2024-03-16 18:47:36 424 1

原创 蓝桥杯2023年-平均(小根堆)

有一个长度为 n 的数组(n 是 10 的倍数),每个数 ai 都是区间 [0, 9] 中的整数。小明发现数组里每种数出现的次数不太平均,而更改第 i 个数的代价为bi,他想更改若干个数的值使得这 10 种数出现的次数相等(都等于n/10),请问代价和最少为多少。

2024-03-16 18:24:02 362

原创 蓝桥杯2023年-阶乘的和(数学推理,C++)

给定 n 个数 Ai,问能满足 m!为∑ni=1(Ai!) 的因数的最大的 m 是多少。其中 m!表示 m 的阶乘,即 1 × 2 × 3 × · · · × m。

2024-03-14 20:40:09 936

原创 蓝桥杯2023年-三国游戏(贪心)

小蓝正在玩一款游戏。游戏中魏蜀吴三个国家各自拥有一定数量的士兵X, Y, Z (一开始可以认为都为 0 )。游戏有 n 个可能会发生的事件,每个事件之间相互独立且最多只会发生一次,当第 i 个事件发生时会分别让 X, Y, Z 增加Ai , Bi ,Ci。当游戏结束时 (所有事件的发生与否已经确定),如果 X, Y, Z 的其中一个大于另外两个之和,我们认为其获胜。例如,当 X > Y + Z 时,我们认为魏国获胜。小蓝想知道游戏结束时如果有其中一个国家获胜,最多发生了多少个事件?

2024-03-14 18:53:31 754

原创 树上差分原理

表示为后面的区间都减去权值,为后面不应该受影响的区间抵消掉该影响。最后再做一个前缀和,则就能将差分值转化为每个点在修改后的权值了。那么两结点的"区间修改"也就是“两结点的差分值各自+1,最近公共祖先的差分值每次-1(总共减2)"常用在线性修改区间的值,我们通过修改区间边界的值,”可以理解为“结点与其所有子树的权值之和”。树上差分常用在对路径权值的快速修改操作。则前缀和就是该结点的入边的权值。表示给后面的区间都加上权值,那么将线性差分转化为。我们将线性差分中的"

2024-03-13 20:31:41 402

原创 最近公共祖先结点--LCA(倍增法,言简意赅)

首先我们来想想朴素做法是怎样的。

2024-03-13 19:54:42 609

原创 蓝桥杯2023年-砍树(dfs,树上差分)

给定一棵由 n 个结点组成的树以及 m 个不重复的无序数对 (a1, b1), (a2, b2),. . . , (am, bm),其中 ai 互不相同,bi 互不相同,ai ≠ bj(1 ≤ i, j ≤ m)。小明想知道是否能够选择一条树上的边砍断,使得对于每个 (ai , bi) 满足 ai和 bi 不连通,如果可以则输出应该断掉的边的编号(编号按输入顺序从 1 开始),否则输出 -1.

2024-03-13 19:05:03 456 1

原创 蓝桥杯2023年-景区导游(倍增法求LCA)

某景区一共有 N 个景点,编号 1 到 N。景点之间共有 N − 1 条双向的摆渡车线路相连,形成一棵树状结构。在景点之间往返只能通过这些摆渡车进行,需要花费一定的时间。小明是这个景区的资深导游,他每天都要按固定顺序带客人游览其中 K 个景点:A1, A2, . . . , AK。今天由于时间原因,小明决定跳过其中一个景点,只带游客按顺序游览其中 K − 1 个景点。

2024-03-12 20:26:30 597

原创 蓝桥杯2023年-整数删除(链表,小根堆)

给定一个长度为 N 的整数数列:A1, A2, . . . , AN。你要重复以下操作 K 次:每次选择数列中最小的整数(如果最小值不止一个,选择最靠前的),将其删除。并把与它相邻的整数加上被删除的数值。输出 K 次操作后的序列。

2024-03-11 20:09:56 412

原创 蓝桥杯2023年-岛屿个数(dfs,染色法)

小蓝得到了一副大小为 M × N 的格子地图,可以将其视作一个只包含字符‘0’(代表海水)和 ‘1’(代表陆地)的二维数组,地图之外可以视作全部是海水,每个岛屿由在上/下/左/右四个方向上相邻的 ‘1’ 相连接而形成。

2024-03-10 20:00:54 552

原创 蓝桥杯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,请你计算最少从中删除多少个数,可以使剩下的序列是接龙序列?

2024-03-10 18:50:21 394

原创 蓝桥杯2023年-飞机降落(暴力枚举,next_permutation)

N 架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 Ti 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 Di 个单位时间,即它最早可以于 Ti 时刻开始降落,最晚可以于 Ti + Di 时刻开始降落。降落过程需要 Li个单位时间。一架飞机降落完毕时,另一架飞机可以立即在同一时刻开始降落,但是不能在前一架飞机完成降落前开始降落。请你判断 N 架飞机是否可以全部安全降落。

2024-03-09 19:36:02 405

原创 蓝桥杯2023年-冶炼金属(数学推理)

小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V,V 是一个正整数,这意味着消耗 V 个普通金属 O 恰好可以冶炼出一个特殊金属 X,当普通金属 O 的数目不足 V 时,无法继续冶炼。现在给出了 N 条冶炼记录,每条记录中包含两个整数 A 和 B,这表示本次投入了 A 个普通金属 O,最终冶炼出了 B 个特殊金属 X。每条记录都是独立的,这意味着上一次没消耗完的普通金属 O 不会累加到下一次的冶炼当中。

2024-03-09 18:55:51 400

原创 蓝桥杯2023年-买瓜(dfs,类型转换同样耗时)

小蓝正在一个瓜摊上买瓜。瓜摊上共有 n 个瓜,每个瓜的重量为 Ai。小蓝刀功了得,他可以把任何瓜劈成完全等重的两份,不过每个瓜只能劈一刀。小蓝希望买到的瓜的重量的和恰好为 m。请问小蓝至少要劈多少个瓜才能买到重量恰好为 m 的瓜。如果无论怎样小蓝都无法得到总重恰好为 m 的瓜,请输出 −1。

2024-03-08 20:19:13 731 1

原创 蓝桥杯2023年-颜色平衡树(哈希表,dfs,map作返参)

给定一棵树,结点由 1 至 n 编号,其中结点 1 是树根。树的每个点有一个颜色 Ci。如果一棵树中存在的每种颜色的结点个数都相同,则我们称它是一棵颜色平衡树。求出这棵树中有多少个子树是颜色平衡树。

2024-03-08 18:47:18 514

原创 蓝桥杯2023年-更小的数(字符串,推理)

小蓝有一个长度均为 n 且仅由数字字符 0 ∼ 9 组成的字符串,下标从 0 到 n − 1,你可以将其视作是一个具有 n 位的十进制数字 num,小蓝可以从 num 中选出一段连续的子串并将子串进行反转,最多反转一次。小蓝想要将选出的子串进行反转后再放入原位置处得到的新的数字 numnew 满足条件 numnew < num,请你帮他计算下一共有多少种不同的子串选择方案,只要两个子串在 num 中的位置不完全相同我们就视作是不同的方案。注意,我们允许前导零的存在,即数字的最高位可以是 0 ,这是合法的。

2024-03-08 18:17:23 500

原创 蓝桥杯2023年-平方差(数学)

给定 L, R,问 L ≤ x ≤ R 中有多少个数 x 满足存在整数 y,z 使得 x = y2 − z2。

2024-03-08 17:54:54 432

原创 蓝桥杯2013年-幸运数(C语言-链表模拟)

幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。首先从1开始写出自然数1,2,3,4,5,6,....1 就是第一个幸运数。我们从2这个数开始。把所有序号能被2整除的项删除,变为:把它们缩紧,重新记序,为:这时,3为第2个幸运数,然后把所有能被3整除的序号位置的数删去。注意,是序号位置,不是那个数本身能否被3整除!!

2024-03-05 19:42:03 655

原创 蓝桥杯2013年-带分数(暴力全排列check方案数)

100 可以表示为带分数的形式:100 = 3 + 69258 / 714。还可以表示为:100 = 82 + 3546 / 197。注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。类似这样的带分数,100 有 11 种表示法。

2024-03-05 18:42:05 470

原创 蓝桥杯2013年-危险系数(dfs求所有路径,记录点出现次数)

问题描述抗日战争时期,冀中平原的地道战曾发挥重要作用。地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。我们来定义一个危险系数DF(x,y):对于两个站点x和y (x!= y), 如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关于x,y的关键点。相应的,对于任意一对站点x和y,危险系数DF(x,y)就表示为这两点之间的关键点个数。本题的任务是:已知网络结构,求两站点之间的危险系数。

2024-03-05 18:20:40 492

原创 [蓝桥杯2015决赛]穿越雷区 (BFS)

X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废。某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短?已知的地图是一个方阵,上面用字母标出了A,B区,其它区都标了正号或负号分别表示正负能量辐射区。坦克车只能水平或垂直方向上移动到相邻的区。

2024-02-28 14:31:04 547

原创 [蓝桥杯2015初赛]生命之树 (树形dp)

在X森林里,上帝创建了生命之树。他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值。上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 {a, v1, v2, ..., vk, b}使得这个点列中的每个点都是S里面的元素,且序列中相邻两个点间有一条边相连。在这个前提下,上帝要使得S中的点所对应的整数的和尽量大。这个最大的和就是上帝给生命之树的评分。经过atm的努力,他已经知道了上帝给每棵树上每个节点上的整数。

2024-02-28 08:38:57 580

原创 [蓝桥杯2015初赛]牌型种数 (dfs枚举)

思路:dfs枚举,cnt记录当前拿了多少张牌,k记录当前枚举的的几种牌。题目大意:求从一副扑克(13*4)中取出13张的方案数。

2024-02-27 18:52:38 359

原创 [蓝桥杯2018初赛]第几个幸运数 (暴力)

前10个幸运数字是:3 5 7 9 15 21 25 27 35 45,因而第11个幸运数字是:49。国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。去领奖的时候,人家要求他准确说出这是第几个幸运数字,否则领不到奖品。请你帮小明计算一下,59084709587505是第几个幸运数字。思路:直接枚举所有3,5,7的幂的乘积,排除溢出判断:大于0。到x星球旅行的游客都被发给一个整数,作为游客编号。x星的国王有个怪癖,他只喜欢数字3,5和7。

2024-02-26 21:26:17 394

原创 [蓝桥杯2018初赛]耐摔指数 (动态规划)

最佳策略,最坏运气,求测试次数。如果已知了测试塔的高度,并且采用最佳策略,在最坏的运气下最多需要测试多少次才能确定手机的耐摔指数呢?塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。dp[i][j]表示:剩i部手机的情况下,楼层数为j时,最少的测试次数(最佳方案下)为多少。一、该次测试坏了,手机数量减一,测试下部分的楼层:dp[i - 1][k - 1] + 1。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。

2024-02-26 20:41:04 558

原创 [蓝桥杯2018初赛]小朋友崇拜圈(dfs暴力 / Tarjan求强连通分量)

(碎碎念:开始没有觉得dfs暴力能过,毕竟数据范围是1e5,暴力的最差复杂度可能直接会飙到1e10(1e5个点凑成一个环),但是蓝桥杯也不愧被誉为"暴力杯",数据比较体贴,数据里面没有这种的极端情况。思路:每个点跑一遍dfs,如果dfs过程中遇到了该点,则表示构成了一个环。dfs过程中记录一下路径长度,如果构成了环则更新一下最大值即可。思路:每个点跑一遍tarjan,求最大的强连通分量就行。(这个解法才应该算是比较合理的解法,大概20ms,时间优化了10倍)题目大意:给定一张图,求最大的环。

2024-02-26 19:12:21 372

原创 POI word操作 表格 如何合并单元格(一行代码)

需要用到TableTools。

2024-02-02 17:06:21 1427

原创 POI word操作,如何使表格单元格文本内容垂直/水平居中(两行代码解决)

水平居中:一般方式行不通,网上苦找了许多方式,代码都太长了,,忒麻烦。于是我突发奇想,发现可以利用paragraph的水平居中对齐方式即可。我们只需要先获取单元格的paragraph,然后设置对齐方式即可。垂直居中:cell本身就有垂直对齐的api,一行代码就够。

2024-02-02 15:59:51 2034

原创 POI操作word表格,添加单元格,单元格对齐方法(不必合并单元格)

添加单元格,直接对row进行create新的cell,则会导致新创建的单元格与前面的单元格不对齐的现象。完美解决,这样一来我们还能够避免使用合并单元格这样的复杂操作来添加单元格。直接添加单元格即可。其实解决方式也很简单,只需要给每个单元格设置宽度所占百分比即可。

2024-02-01 23:57:21 1075

原创 Spring+Mybatis如何处理大批量sql(for循环+批处理法)

如果我们让在同一个循环中的Mapper语句在一个事务中提交,批处理这些sql,不多次创建事务,那么我们就能极大地改善大批量sql的执行时间了。如果只是单纯地将Mapper语句放在循环中,那么会为每次的循环都创建一个事务,导致大批量的sql耗时会很长。

2023-12-13 09:07:43 612

原创 数组模拟链表模板

虽然数组实现的链表速度会快不少,奈何确实繁琐,学过后用的也比较少。现在我一般都是图方便用结构体模拟了。不过还是记录一下吧。

2023-11-30 21:26:42 412

原创 栈模拟先序后序中序遍历(非递归遍历)

所以我们可以把先序遍历的左右子树的遍历顺序倒一下便变成了后序遍历的倒序。后序遍历与先序遍历有互通之处,即后序遍历的倒序为:根右左。中序遍历没有找到优化版,,

2023-11-30 21:02:25 475

原创 1098 Insertion or Heap Sort (插入排序,堆排序,附模拟代码)

堆排序思想:简单来讲就是通过一种方法(模拟堆的思想),将数组的第一个位置一直维护为整个待排序数组的最大值。然后依次将第一个位置与最后一个位置交换位置(因为最后一个位置需要存放最大值嘛,而最大值我们已经维护在了第一个位置),再将待排序数组缩小(因为最后一个位置已经排好序了,我们就不需要管最后一个位置了),然后重新更新最大值(即维护第一个位置的最大值)。而在初始建树时,我们需要从底层开始建树,因为down操作只能将小值下沉,而不能直接使大值上浮。依次往下递推,将小值“沉”下去,

2023-11-30 13:21:27 463

原创 1091 Acute Stroke (三维搜索)

题目可能看起来很难的样子,题目意思大概是:给你一个L*M*N的01长方体,求全为1的连通块的总体积大小。(连通块体积大于T才计算在内)思路:直接搜索每个为1的点,计算连通块大小即可。

2023-11-29 17:59:22 523

原创 1089 Insert or Merge (插入排序,相邻归并排序,附模拟实现)

比如:初始为1 2 3 4 3,目标数组也为1 2 3 4 3,则如果是从头开始推的,则下一步会变成1 2 3 4 3,而下一步应该是 1 2 3 3 4。所以我们应该从第一个无序的位置开始排序。也就是从最后一个3开始排序判断目标数组。注意点2:题目中的归并排序为相邻归并(递推归并),而非中分归并(递归归并)。注意点1:判断插入排序不能从头开始判断是否为目标数组,技巧点:排序可以用sort减少思考步骤。

2023-11-29 16:57:49 526

原创 1087 All Roads Lead to Rome(最短路求最大权值,最短路路径条数,节点个数,回溯路径)

【代码】1087 All Roads Lead to Rome(最短路求最大权值,最短路路径条数,节点个数,回溯路径)

2023-11-28 21:59:09 367

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除