- 博客(8)
- 收藏
- 关注
原创 C++ 左对齐 右对齐输出
还遇到过输出几位小数的,那个用c语言的语法就可以,c++反而很复杂。头文件:#include < iomanip >std::right 右对齐。std::left 左对齐。
2024-04-06 19:34:27
526
1
原创 蓝桥备赛 4.2-4.3 最小生成树(Prim堆优化 && Kruskal)
在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边,而 w(u, v) 代表此的边权重,若存在 T 为 E 的子集且为无循环图,使得的 w(T) 最小,则此 T 为 G 的最小生成树。3、在min_dis[n]中找到值最小的顶点i,设置vis[i]为true,表示已确定到该点最短距离,再遍历该点所能到达的点,更新min_dis[ ],重复步骤3,直到循环n次(因为每一次循环都确定一个点)2、从起点出发,记录与它相连的边,并记录权值,更新最短距离min_dis[ ]
2024-04-03 21:32:01
303
1
原创 蓝桥备赛 4.1 Floyd(弗洛伊德)算法
/保存j前驱结点k。k++) //遍历每个点。i++) //遍历每条边。弗洛伊德是用于求多源(任意点到任意点)最短路径的绝佳方法。path[ ][ ]数组是为了方便记录中间节点,可以取舍。(Dijkstra是单源,某个点到任意点)主要是三层循环,以k,i,j举例。,即实现对邻接矩阵的遍历。
2024-04-01 18:39:12
198
原创 蓝桥备赛 3.30 4.1 Dijkstra算法和优先队列(堆优化)洛谷 P3371 【模板】单源最短路径(弱化版)P4779 【模板】单源最短路径(标准版)
同理,vector < edge > arr[100]就是一个一维数组e,最多含有100个vector < edge > 类型的元素,而每一个vector又是一个一维向量,每一个这个向量都可以插入任意多个edge类型(即结构体)的元素,换句话说,vector < edge > arr[100] 就可以看成一个最多有100行的二维数组,而二维数组的列数是任意个,每一行的元素也不固定,这就保证了内存空间不会浪费。描述图的代码,应该是多了很多用不着的空间,测试用例均是。Dijkstra的堆优化实现,后续更新~
2024-03-30 22:06:08
1262
原创 蓝桥备赛 3.26-3.27 简单迷宫(DFS+回溯)迷宫与陷阱(BFS+三维数组)
ok,今天依然是8点闹钟 9.30醒 晕乎乎的突然想起来简单看一下去年看过的迷宫,用的是dfs+回溯,简单回顾一下。
2024-03-26 20:06:48
1394
原创 蓝桥备赛 2024.3.25 Nim博弈论
后来不确定,打开题解,发现是Nim博弈论的变式,于是开始研究Nim博弈论的模板题。然后用a[i] ^ s替换a[i] //因为s^s=0,满足替换后进入必败态。必胜台的后继状态中必有必败态,必败态的后继状态均为必胜态。为什么在对b数组进行异或运算的时候只计算奇数位数的,即。手搓一遍差不多懂了,只有一个地方出现了问题!异或运算:两者的值不同为真,否则为假。找到一个 a[i]>a[i]^s。拿出a[i]-a[i]^s个石子。上了马原,还下了雨,悲伤~~真命题:有且只有一个为真。
2024-03-25 21:24:55
267
原创 OJ P1809 wzy的跑步
接下来是中间道路,赋予了新的begin和end(在上文),这两个点都是干燥的,因为begin和end的初始值分别为1和n,所以即使位置1和位置n也是干燥的,也能轻松合并情况。对于第一段道路,若已知第一点有水塘,则wzy先到第一个点,此时踩了一次水塘,然后将位置1作为出发点,假设位置1无水塘(因为已经记录过踩水塘次数+1),找到第一个实际干燥的地方right,所需要经历的踩水塘次数为count+=(right-1-1)/k+1,这里的第一个1则表示假设干燥的位置1,最后的+1则表示踩了第一个水塘。
2023-05-12 14:07:42
1128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人