- 博客(22)
- 收藏
- 关注
原创 C++ 拓扑排序(topsort) 洛谷
拓扑排序是一个有向无环图的所有顶点的线性序列。该序列需要满足每个顶点出现且和如果有一条 A 到 B 的路径,在序列中 A 出现在 B 的前面。这道题目显然全部满足以上条件。如果不懂可以看下面样例的有向无环图。拓扑排序的步骤:计算每个点的入度。入度为 0 就加入队列。当队列不为空则循环:取出队首元素并输出。遍历队首元素的连边,对应节点的入度 −1。当对应的节点入度为 0 就加入队列。
2024-08-04 17:28:44
1316
1
原创 洛谷 P5764 [CQOI2005] 新年好
每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的路径需要花费的时间可能不同。在一条路径上花费的时间等于路径上所有公路需要的时间之和。佳佳的家在车站 1,他有五个亲戚,分别住在车站 a,b,c,d,e。过年了,他需要从自己的家出发,拜访每个亲戚(顺序任意),给他们送去节日的祝福。以下 m 行,每行三个整数 x,y,t,为公路连接的两个车站编号和时间。第二行:a,b,c,d,e,分别为五个亲戚所在车站编号。第一行:n,m,分别为车站数目和公路的数目。
2024-08-04 13:45:09
631
1
原创 C++ 最小生成树 洛谷
最小生成树是个啥?其实就像杨志一行人押送生辰纲。抛开最后生辰纲被抢的结局不谈,杨志他们需要到好几个地方,每个地方都需要花点过路费给梁山好汉们打点。比如下面就是一张城市地图:其中每两个图之间的路径长就是要给梁山好汉们打点的银子数。比如。那么问题来了,。(不信?画几个图试试)众所周知,。(还是不信?画图......)所以,**我们就管这棵各边权值(费用)和叫“最小生成树”**了。那这个最小生成树到底怎么搞呢?我们伟大的先哲发明了两种算法:一种叫,另一种叫。
2024-08-03 15:53:55
2198
原创 C++ 最短路(distra) 洛谷
2018 年 7 月 19 日,某位同学在一题里非常熟练地使用了一个广为人知的算法求最短路。然后呢?100→60;Ag→Cu;最终,他因此没能与理想的大学达成契约。小 F 衷心祝愿大家不再重蹈覆辙。
2024-08-03 11:30:49
993
2
原创 C++ 最短路(道路重建)
从前,在一个王国中,在 n 个城市间有 m 条道路连接,而且任意两个城市之间至多有一条道路直接相连。在经过一次严重的战争之后,有 d 条道路被破坏了。国王想要修复国家的道路系统,现在有两个重要城市 A 和 B 之间的交通中断,国王希望尽快的恢复两个城市之间的连接。你的任务就是修复一些道路使 A 与 B 之间的连接恢复,并要求修复的道路长度最小。
2024-07-31 16:54:55
255
原创 C++ 最短路( spfa 判断负环)
接下来 m 行每行包含三个整数 x,y,z。表示存在一条从点 x 到点 y 的有向边,边长为 z。给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。如果图中存在负权回路,则输出 Yes,否则输出 No。请你判断图中是否存在负权回路。第一行包含整数 n 和 m。
2024-07-31 15:18:02
287
原创 C++ 清除地雷bfs
在一张 n×m 的地图上,有一些地雷,用 1 表示,其余没有地雷的地方用 0 表示;如果某个地雷被引爆了,那么它的波及范围会炸掉 周围八个位置的土地和该地雷所在位置的土地,如果在它的八个位置上也有地雷,那么这些地雷将会连锁反应,继续引爆,爆炸后的土地用 2 表示。第 n+2 行包含两个整数:x(1≤x≤n),y(1≤y≤m),表示地图上指定开始(引爆)的坐标。输入共计 n+2行:第一行包含两个整数:n(1≤n≤100),m(1≤m≤100),表示地图的大小为 n×m。
2024-07-30 09:07:18
199
原创 C++ 线性dp 洛谷
观察下面的数字金字塔。写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。在上面的样例中,从 7→3→8→7→57→3→8→7→5 的路径产生了最大权值。
2024-07-06 18:06:22
2059
1
原创 C++ 宽搜bfs 洛谷
爱与愁大神买完东西后,打算坐车离开中山路。现在爱与愁大神在 x1,y1 处,车站在 x2,y2 处。现在给出一个 n×n(n≤1000) 的地图,0 表示马路,1 表示店铺(不能从店铺穿过),爱与愁大神只能垂直或水平着在马路上行进。爱与愁大神为了节省时间,他要求最短到达目的地距离(每两个相邻坐标间距离为 1)。第 2 行到第 n+1 行:整个地图描述(0 表示马路,1 表示店铺,注意两个数之间没有空格)。第 n+2 行:四个数 x1,y1,x2,y2。只有 1 行,即最短到达目的地距离。
2024-07-05 11:54:47
243
原创 C++ 搜索dfs 洛谷
不是任何人都可以进入桃花岛的,黄药师最讨厌像郭靖一样呆头呆脑的人。所以,他在桃花岛的唯一入口处修了一条小路,这条小路全部用正方形瓷砖铺设而成。有的瓷砖可以踩,我们认为是安全的,而有的瓷砖一踩上去就会有喷出要命的毒气,那你就死翘翘了,我们认为是不安全的。你只能从一块安全的瓷砖上走到与他相邻的四块瓷砖中的任何一个上,但它也必须是安全的才行。
2024-07-04 17:58:03
819
原创 C++ 二叉树的深度和宽度
有一颗二叉树,如下图:此二叉树共有7个结点①②③④⑤⑥⑦,并约定结点①为根结点,处在第一层。根结点①有2个孩子,左孩子为②,右孩子为③,并约定二叉树的一个结点最多有2个孩子。二叉树可以用三元式表示,(结点 左孩子 右孩子)对于上图的二叉树可以表示为:上面二叉树的深度为4(即最大层次数),宽度为3(即,同一层上最多结点数)。
2024-07-03 16:12:21
420
原创 C++ 顺序存储法
完全二叉树适合采用顺序存储法。具体存储规则如下(一维数组存储法):1. 根节点的下标为12. 若某结点的下标为 i,则其左孩子位于下标 2i 处、右孩子位于下标 2i+1 处现在读入一个顺序存储法的完全二叉树,输出对应的前序,中序,后续遍历。
2024-07-03 15:47:18
159
原创 C++ 全排列+组合的输出
按照字典序输出自然数 1 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。
2024-07-03 15:03:20
382
原创 C++ 数据结构
/ prioriy_queue 最小的在前面。q.push(1);if(mp.count("abc")>=1) //看看有没有。
2024-07-01 13:30:01
314
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人