- 博客(42)
- 收藏
- 关注
原创 力扣:2050. 并行课程 III
课程 5 需在课程 1,2,3 和 4 之后开始,也就是在 max(1,2,3,7) = 7 月开始。课程 4 需在课程 3 之后开始,也就是 3 个月后。所以,最早开始课程 3 的时间是月份 3 ,完成所有课程所需时间为 3 + 5 = 8 个月。上图展示了输入数据所表示的先修关系图,以及完成每门课程需要花费的时间。上图展示了输入数据所表示的先修关系图,以及完成每门课程需要花费的时间。所以完成所有课程所需的最少时间为 7 + 5 = 12 个月。课程 1 花费 3 个月,课程 2 花费 2 个月。
2025-12-09 21:04:50
773
原创 洛谷:B3647 【模板】Floyd
对于 100% 的数据,n≤100,m≤4500,任意一条边的权值 w 是正整数且 1⩽w⩽1000。接下来 m 行,每行三个整数 u,v,w,代表 u,v 之间存在一条边权为 w 的边。第 i 行的第 j 个整数代表从 i 到 j 的最短路径。第一行为两个整数 n,m,分别代表点的个数和边的条数。给出一张由 n 个点 m 条边组成的无向图。求出所有点对 (i,j) 之间的最短路径。输出 n 行每行 n 个整数。
2025-12-06 15:18:07
275
原创 洛谷:P4779 【模板】单源最短路径(标准版)
第一行为三个正整数 n,m,s。第二行起 m 行,每行三个非负整数 ui,vi,wi,表示从 ui 到 vi 有一条权值为 wi 的有向边。给定一个 n 个点,m 条有向边的带非负权图,请你计算从 s 出发,到每个点的距离。输出一行 n 个空格分隔的非负整数,表示 s 到每个点的距离。一题里非常熟练地使用了一个广为人知的算法求最短路。本题数据可能会持续更新,但不会重测,望周知。最终,他因此没能与理想的大学达成契约。小 F 衷心祝愿大家不再重蹈覆辙。数据保证你能从 s 出发到任意点。
2025-12-05 17:35:46
332
原创 洛谷:P3366 【模板】最小生成树(Kruskal模板,prim模板+堆优化)
接下来 M 行每行包含三个整数 Xi,Yi,Zi,表示有一条长度为 Zi 的无向边连接结点 Xi,Yi。对于 100% 的数据:1≤N≤5000,1≤M≤2×105,1≤Zi≤104,1≤Xi,Yi≤N。如果该图不连通则输出。第一行包含两个整数 N,M,表示该图共有 N 个结点和 M 条无向边。如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出。对于 40% 的数据,N≤50,M≤2500。对于 70% 的数据,N≤500,M≤104。对于 20% 的数据,N≤5,M≤20。
2025-12-05 16:47:19
143
原创 洛谷:P2880 [USACO07JAN] Balanced Lineup G(多种思路:暴力,线段树,倍增)
John 准备了 q (1≤q≤1.8×105) 个可能的牛的选择和所有牛的身高 hi (1≤hi≤106,1≤i≤n)。他想知道每一组里面最高和最低的牛的身高差。如果从线段树的视角看这个题,那么这道题就相当于线段树做区间查询最值的模板,甚至完全用不到 lazy下放,直接通过区间查询即可得到答案。再接下来 q 行,每行两个整数 a 和 b,表示询问第 a 头牛到第 b 头牛里的最高和最低的牛的身高差。输出共 q 行,对于每一组询问,输出每一组中最高和最低的牛的身高差。第一行两个数 n,q。
2025-12-04 18:08:42
317
原创 洛谷:P4155 [SCOI2015] 国旗计划
既然要求最少需要几人,那么就要保证每个人要走的尽量远,也就是尽可能取到最大步长。而这里要走最大步长目的是为了 “接力更远”,因为题目说奔腾区间之间不存在包含关系,也就可以推导出如果一个人的奔腾区间为[c1,d1],另一个人的奔腾区间为[c2,d2],如果c1>c2则d2一定大于d1,否则就出现包含关系,不满足题意。
2025-12-02 17:48:22
952
原创 Codeforces Round 1052 (Div. 2) C. Wrong Binary Searchong Binary Search
给一个二进制字符串,字符串下标从1开始,如果s[i]为1则i为稳定点,反正为不稳定点,需要我们依据伪代码构造一个长度为n的排序,使得排序中的每个数都满足对应s中的稳定点与不稳定点。如果非稳定点个数>=2,如非稳定点个数=2,举例:s=1001,1为稳定点,2为不稳定点,3为不稳定点 4为稳定点。如果非稳定点个数>=2,如非稳定点个数=2,举例:s=0011,1为不稳定点,2为不稳定点,3为稳定点 4为稳定点。如果非稳定点个数=1,举例:s=101的情况下,1为稳定点,2为不稳定点,3为稳定点。
2025-09-28 11:05:45
638
原创 洛谷:B4016 树的直径
这时候暂且不去想路径穿过x结点再向x的根结点去,这时候路径应该是从x的一个叶子结点出发,穿过x结点,然后到达另一个叶子结点。从x结点的角度看,此时的最大直径就是 x结点的2条最大子链的长度+自身。总结以上2种情况,对于任意一个结点x,我们需要的信息有三:最大子链长度,次长子链长度,及以自身为根的最大子链长度。然后就是一直递归下去,直到递归至叶子结点,叶子结点1的最长自链长度为1,最大直径为0。对于某个根节点x,以x为根的树所拥有的最大直径就只有2种情况,一种是直径穿过根节点,另一种是不穿过根节点。
2025-09-21 17:51:22
287
原创 洛谷:P8744 [蓝桥杯 2021 省 A] 左孩子右兄弟
对于一棵多叉树,我们可以通过“左孩子右兄弟”表示法,将其转化成一棵二叉树。如果我们认为每个结点的子结点是无序的,那么得到的二叉树可能不唯一。换句话说,每个结点可以选任意子结点作为左孩子,并按任意顺序连接右兄弟。给定一棵包含 N 个结点的多叉树,结点从 1 至 N 编号,其中 1 号结点是根,每个结点的父结点的编号比自己的编号小。请你计算其通过"左孩子右兄弟"表示法转化成的二叉树,高度最高是多少。
2025-09-20 16:28:00
350
原创 P1040[NOIP 2003 提高组] 加分二叉树
因为现在假设的 i 为区间上的根节点,而题目又说输入的为二叉树的中序遍历,根据中序遍历:左->根->右,可以推出,根节点 i左侧的区间 [l,i-1]都是左子树范围,右区间 [i+1,r]都是右子树范围,此时就要递归2个子树求出子树的最大加分并返回,而[ l,r ]区间上的最大加分显然就是左子树的最大加分+右子树的最大加分+根节点分数,最后将[ l,r ]区间上的最大加分返回,如果遇到区间长度为1就说明递归已经走到了叶子结点,直接返回叶子结点的对应分值即可,至此完成递归的循环。tree 的最高加分。
2025-09-17 12:14:02
549
原创 洛谷:P1622 释放囚犯
无论在这个区间上选谁释放,都会有一个 送肉“成本”= a[r + 1] - a[l - 1] - 2,因为当前选择的区间 [ l,r ]的含义是在a数组的闭区间 l下标与r下标之间选择一个人员编号进行释放,而 [ l,r ] 还有一个外围区间 [ a[l - 1], a[r + 1]]也就是上一次释放人员之后生成的子区间,就好比是例1中选择释放6号时,实际上是在14号释放之后的子区间 [0,13]上释放的,而[0,13]就是 a数组上区间 [1,2]的外围区间;仅一行,表示最少要给多少人次送肉吃。
2025-09-16 19:15:53
602
原创 力扣:1547. 切棍子的最小成本
之后开始切割木棍,对于任意一个切割区间 [ l,r ],(l,r为切割的2个断点在数组中的下标),要选在其中寻找哪个点进行切割,于是就要遍历区间,如果当前的切割点为 i,那么在 i 处切割后,切割区间 [ l,r ]就出现了2个子区间切割区间 [ l,i-1 ]和切割区间 [ i+1,r ],这时就需要递归访问2个子区间,在子区间上再求最小成本。第二次切割长度为 6 的棍子(即第一次切割得到的第二根棍子),第三次切割为长度 4 的棍子,最后切割长度为 3 的棍子。如果按给定的顺序切割,则总成本为 25。
2025-09-15 20:51:56
349
原创 力扣:2322. 从树中删除边的最小分数
通过上述的概念不难推出,在一棵树上去除一子树求剩下部分的异或就同于将整棵树的异或总值与去除部分的异或总值再进行一次异或,举个例子:在例1中,[1,3,4]=[0,1,2,3,4]⊕[0]⊕[2],换句话说,以1结点为根的树上异或总值 与 以2结点为根的树上异或总值 进行异或就是剩下部分的异或总值。这样一来,假设经过剪切后一部分的根节点为i,另一部分的根节点为j,i子树的dfs序列区间即为 [dfn[i],dfn[i]+ch[i]-1],如果dfn[j]位于这个区间就说明结点 j 位于 i子树内。
2025-09-05 21:19:36
655
原创 力扣:2458. 移除子树后的二叉树高度(dfs序)
每一次枚举,dfs都从根节点出发向下搜索,先走左子树,再走右子树,每次向下搜索时都将深度+1,如果在搜索的过程中遇到了当前删除的结点 i 就回溯,直到当前结点不可向下 (一个子树为空,另一个子树为当前被删除,) 或者当前结点为叶子结点 (左右子树都为空),搜索停止,判断当前深度是否为最大,然后return回溯。树上结点数n如果=1e5,queries 数组中的元素如果都比较接近根节点,那么每次标记所走的 dfs其时间复杂度同样很大,在时间上并不会很占优。树的高度是 2(路径为 1 -> 3 -> 2)。
2025-09-02 17:35:00
1627
原创 2021睿抗决赛 猛犸不上 Ban
在一个名叫刀塔的国家里,有一只猛犸正在到处跑着,希望能够用它的长角抛物技能来撞飞别人。已知刀塔国有 N 座城市,城市之间由 M 条道路互相连接,为了拦住这头猛犸,每条道路上设置了 Vi 人的团队。猛犸经过一条道路后,就会把路上的人全部撞飞。作为一头爱喝雪碧的仁慈的猛犸,自然希望尽可能的少撞飞人。请你帮忙计算一下在最优的选择下,最少需要撞飞多少人才能够到达目标城市?
2025-08-14 20:01:47
1851
原创 力扣:2246. 相邻字符不同的最长路径
如果该节点不为叶子结点,就访问其所有子节点,获取子节点(子树)的最长路径,如果子节点的字符与 x 结点字符不等,该条件下计算更新到达子节点的最大深度和第二大深度,获得这些信息后进行比较,上述的第一种情况就是获取的子树最长路径,而第二种情况也可通过计算得出。第一种思路也是比较无脑的解法,把树当作特殊的无向图处理,由 parent 数组关系建立邻接表,遍历所有结点,对每个结点做 dfs,递归访问相邻结点,判断相邻结点和自身的字符是否相等,相等就终止并返回,不相等就继续递归搜索。,并返回该路径的长度。
2025-08-05 19:49:59
460
原创 力扣:2477. 到达首都的最少油耗
代表 2 和代表 3 一起到达城市 1 ,消耗 1 升汽油。- 代表 2 和代表 3 一起到达首都,消耗 1 升汽油。- 代表 4 和代表 6 一起到达首都,消耗 1 升汽油。- 代表 2 到达城市 3 ,消耗 1 升汽油。- 代表 6 到达城市 4 ,消耗 1 升汽油。- 代表 1 直接到达首都,消耗 1 升汽油。- 代表 2 直接到达首都,消耗 1 升汽油。- 代表 3 直接到达首都,消耗 1 升汽油。- 代表 1 直接到达首都,消耗 1 升汽油。- 代表 5 直接到达首都,消耗 1 升汽油。
2025-08-01 16:45:02
331
原创 力扣:437. 路径总和 III
想象一下,从根节点递归到x结点的节点值之和为sum,而到同路径上某一点y的节点值之和为sum-target,那么x与y之间的节点值之和就是 sum-(sum-targetSum)=targetSum。那如果 y 结点不止一个,还有 y1,y2,y3...yn ,根结点到这n个结点的距离都是sum-targetSum,那么就有n个结点到x的节点数为target,符合题意的路径条数就是这些结点的结点数n,同样也是一路上节点值为sum-targetSum的出现次数n。思路:灵感来源b站左程云,左神太强了!
2025-07-31 11:14:16
370
原创 力扣:968. 监控二叉树
再假设空结点的状态为2,那么叶子结点的状态将是1,但在整棵树只有这一个结点的情况下,要想监控到所有结点,必须在其位置安装摄像头,也就是状态2,假设自然也不成立。,如果不安装摄像头,那么该节点的父结点一定会安装摄像头,父节点的摄像头刚好可以监控到该节点,唯一需要考虑的就是根节点,根节点没有父节点,此时minCameraCover函数的最终返回值就需要讨论根节点的状态,如果根节点状态为0,则将根节点所需的最小摄像头数量+1再返回,否则就返回根节点所需的最小摄像头数量。,那么该节点一定不需要安装摄像头,
2025-07-29 18:39:26
481
原创 洛谷 P1352 没有上司的舞会
现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数 ri,但是呢,如果某个职员的直接上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。如果idx 参加舞会,那么idx的所有直接下属都不能参加,这种状态下的最大快乐指数应是初始值从r[idx] 开始加上所有直接下属不参加舞会的最大快乐指数。如果 idx 结点不参加舞会,那么 idx 结点的直接下属将不受约束,到 idx 的最大的快乐指数就是访问其若干子节点,将他们的最大的快乐指数相加即可。输出一行一个整数代表最大的快乐指数。
2025-07-29 13:27:43
263
原创 2022睿抗国赛 RC-u2 女王的大敕令
副本是游戏里的一个特色玩法,主要为玩家带来装备、道具、游戏资源的产出,满足玩家的游戏进程。在 MMORPG《最终幻想14》里,有一个攻略人数最大达到 48 人的副本“零式贡希尔德神庙”,其中守关 BOSS “天佑女王”有一个很有趣的技能:“女王的大敕令”。技能在一个 5×5 的棋盘上展开。每位玩家根据给定的两个步长,从某个方格出发,在棋盘上先走 D1 步,再走 D2 步。其中“步长”指的是。
2025-07-25 22:04:27
775
原创 2022睿抗国赛 RC-u3 战利品分配
在某个战争游戏中,多个玩家组成一个大型军团,攻下若干城池,并获得战利品。具体而言,游戏中有 N 个城市,并以 M 条长度为 1 的无向道路连接,玩家们组成的军团从 S 号城市开始进攻,目的地是 T 号城市,每个城市攻下后的战利品价值为 pi。
2025-07-24 15:34:02
1704
原创 2023睿抗国赛 RC-u3 兰州拉面派餐系统
兰州拉面是著名美食,其煮面很有讲究,不同种类的面需要煮不同的时长。拉面馆的煮面师傅的规则很简单,只要手头有煮面篮子是空闲的,就把下一份客单指定的面放到空闲篮子里煮;如果空闲的篮子不止一个,那么先放到其中编号最小的篮子里煮;如果没有篮子是空闲的,就等待。一个篮子里的面煮够了时间,师傅要准时捞出来放到该客单对应的碗里,招呼服务员端给客人;如果有多个篮子里的面同时到了捞取时间,师傅会同时捞起,但要本着先到先得的原则,按下单顺序招呼送餐。
2025-07-22 21:32:37
705
原创 2024睿抗国赛 RC-u4 City 不 City
City 不 City”因为一位外国友人保保熊直播旅游时总是用奇怪的腔调说“好 city,啊!”而走红中国社交网络,成为网络热梗。事实上,有一些叛逆的年轻人在旅行时会刻意避开网红打卡点,选择一些小众的特色地方小城镇,不追求 city,而喜欢说“好 country,啊”。下面给定各个城镇的旅游热度和城镇间的旅行花销,请你为前来咨询的旅行者规划一条最经济的路线,并且尽可能避开热度很高的网红点。
2025-07-19 16:00:24
615
原创 力扣:543. 二叉树的直径
因此,在解题过程中可使用递归解法,不断递归获取根节点x的左右子树;如果遇到空树,其深度和最大直径都为0,然后回溯,直到所有子树全部访问,递归完成。第二种情况则是最大直径不经过根节点,而是存在于左右子树上,即某个子树上有一点到另一点的距离大于第一种情况。,他的深度可视为左右结点的最大深度+1,而最大路径通过上述分析进行比较计算即可。3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。第一种是从根结点出发到达左右子树的最大深度相加;给你一棵二叉树的根节点,返回该树的。由它们之间边数表示。
2025-07-19 10:42:23
299
原创 力扣:1373. 二叉搜索子树的最大键值和
如果这棵树连带根节点满足二叉搜索树,此时会出现三棵二叉搜索树即根节点的左子树,右子树,和连带根节点的一颗大树,对应的键值和也有3种情况,左子树的键值和,右子树的键值和,连带根节点的树的键值和,因为是递归调用,左右子树的键值和一定是最大键值和,而连带根节点的大树的键值和就是左,右子树所有结点值和根节点值的求和,此时根节点的最大键值和就是这3者取最大值;题目的大体思路可以总结为:以一个结点为根的二叉搜索树,他的最大键值和是其左子树的最大键值和,右子树的最大键值和与结点自身的某种算术关系。
2025-07-18 12:39:55
847
原创 2022睿抗省赛 RC-u5 树与二分图
设 G=(V,E) 是一个无向图,如果顶点集合 V 可分割为两个互不相交的子集 (A,B),并且每条边 (i,j)∈E 的两个端点 i 和 j 分别属于这两个不同的顶点子集,则称图 G 为一个二分图。现在给定一棵树 T,要求选择树中两个的结点 i 和 j,使得将无向边 (i,j) 加进 T 后能够构成二分图。你的任务是计算满足这个要求的选择方案有多少种。
2025-07-10 15:43:57
751
原创 2021睿抗初赛 芬兰木棋
芬兰木棋(Mölkky,又称芬兰木柱)是源自芬兰的一项运动。哲哲将这个运动改造成了赛博朋克单人版,现在场上一开始有 N 根立起的小木棋(上面分别标有一个非负整数),哲哲投掷一根大木棋去击倒这些小木棋以获得分数。分数规则如下:如果仅击倒 1 根木棋,则得木棋上的分数。如果击倒 2 根或以上的木棋,则只得击倒根数的分数。(例如击倒 5 根,则得 5 分。哲哲固定站在 (0,0) 点上,四周放着若干个小木棋 (Xi,Yi),坐标均为整数。
2025-07-08 14:43:52
717
原创 P9232 [蓝桥杯 2023 省 A] 更小的数
小蓝有一个长度均为 n 且仅由数字字符 0∼9 组成的字符串,下标从 0 到 n−1,你可以将其视作是一个具有 n 位的十进制数字 num,小蓝可以从 num 中选出一段连续的子串并将子串进行反转,最多反转一次。小蓝想要将选出的子串进行反转后再放入原位置处得到的新的数字 numnew 满足条件 numnew<num,请你帮他计算下一共有多少种不同的子串选择方案,只要两个子串在 num 中的位置不完全相同我们就视作是不同的方案。注意,我们允许前导零的存在,即数字的最高位可以是 0,这是合法的。
2025-07-06 17:49:30
729
原创 力扣:851. 喧闹和富有
person 5 比 person 3 有更多的钱,person 3 比 person 1 有更多的钱,person 1 比 person 0 有更多的钱。编号,其中每个人都有不同数目的钱,以及不同程度的安静值(quietness)。在所有拥有的钱肯定不少于 person 7 的人中(这可能包括 person 3,4,5,6 以及 7),唯一较为安静(有较低的安静值 quiet[x])的人是 person 7,的前提是,在所有拥有的钱肯定不少于 person。现在,返回一个整数数组。的人中,person。
2025-07-05 12:04:57
324
原创 P4017 最大食物链计数
你知道食物链吗?Delia 生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条。于是她来就来求助你,然而你也不会啊!写一个程序来帮帮她吧。给你一个食物网,你要求出这个食物网中最大食物链的数量。(这里的“最大食物链”,指的是生物学意义上的食物链,即最左端是不会捕食其他生物的生产者,最右端是不会被其他生物捕食的消费者。)Delia 非常急,所以你只有 1 秒的时间。由于这个结果可能过大,你只需要输出总数模上 80112002 的结果。第一行,两个正整数 n、m,表示生物种类 n 和吃
2025-07-04 14:57:05
445
原创 力扣:210. 课程表 II
总共有 4 门课程。要学习课程 3,你应该先完成课程 1 和课程 2。并且课程 1 和课程 2 都应该排在课程 0 之后。总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为。返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回。如果不可能完成所有课程,返回。因此,一个正确的课程顺序是。
2025-07-04 12:36:14
394
原创 2022睿抗省赛 跑团机器人
在桌面角色扮演游戏(TRPG,俗称“跑团”)中,玩家需要掷出若干个骰子,根据掷出的结果推进游戏进度。在线上同样可以跑团,方法是由玩家们向机器人发出指令,由机器人随机产生每个需要掷出的骰子的结果。玩家向机器人发出的指令是一个仅涉及加法和减法的表达式,即对若干个数字进行一系列加法或减法计算。这些数字可以是直接给出的非负整数(数字不超过 10001000),也可以是若干个骰子掷出的结果。“掷骰子”这个动作对应的指令格式为xdy,表示摇动 x 个 y 面的骰子。当 x 为 11 时,11 可以省略。
2025-06-27 17:57:53
524
原创 BD202420 魔法石
现有 N 个魔法石排成一列,魔法石有着不同的种类,魔法石列用一串连续的整数来表示。这一列魔法石产生的能量为同种类魔法石连续排列的最大值。比如魔法石列 3,3,1,2,1,13,3,1,2,1,1,其中不同数字表示不同种类魔法石,那么该列魔法石中同种类连续排列最多的为 3,33,3,数量为 22,因此该列魔法石能量为 22。现在你需要施展一次咒语,让这一列魔法石中某一种类泯灭,剩下魔法石依然按顺序排列,请算出施展咒语后该列魔法石能量最多增加多少。
2025-06-07 16:32:13
243
原创 L2-047 锦标赛
有 2k名选手将要参加一场锦标赛。锦标赛共有 k 轮,其中第 i 轮的比赛共有 2k−i 场,每场比赛恰有两名选手参加并从中产生一名胜者。第 k 轮唯一一场比赛的胜者就是整个锦标赛的最终胜者。已知每一名选手都有一个能力值,其中第 i 名选手的能力值为 ai。在一场比赛中,若两名选手的能力值不同,则能力值较大的选手一定会打败能力值较小的选手;若两名选手的能力值相同,则两名选手都有可能成为胜者。令 li,j 表示第 i 轮第 j 场比赛的能力值,令 w 表示整个锦标赛最终胜者的能力值。
2025-05-24 15:42:34
579
原创 2024睿抗省赛 RC-u4 章鱼图的判断
对于无向图 G=(V,E),我们将有且只有一个环的、大于 22 个顶点的无向连通图称之为章鱼图,因为其形状像是一个环(身体)带着若干个树(触手),故得名。给定一个无向图,请你判断是不是只有一个章鱼子图存在。注意:这里的章鱼子图指的是满足章鱼图性质的极大连通子图。
2025-05-22 21:41:41
644
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅