- 博客(137)
- 资源 (2)
- 收藏
- 关注
原创 继续畅通工程
每个测试用例的第1行给出村庄数目N ( 1< N < 100 );随后的 N(N-1)/2 行对应村庄间道路的成本及修建状态,每行给4个正整数,分别是两个村庄的编号(从1编号到N),此两村庄间道路的成本,以及修建状态:1表示已建,0表示未建。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。每个测试用例的输出占一行,输出全省畅通需要的最低成本。
2024-03-15 19:50:03
441
原创 考研机试 畅通工程
随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号。注意:两个城市之间可以有多条道路相通,也就是说 3 3 1 2 1 2 2 1 这种输入也是合法的 当N为0时,输入结束,该用例不被处理。分析:初始状态每个城镇是一个单独的并查集,每输入一条道路,两个城镇进行相连,就是并查集的合并,如果两个城市已经在同一并查集,并查集总数不变,如果不在同一并查集,合并的同时并查集总数要减一。最后并查集数减一就是需要添加的道路总数。
2024-03-14 22:25:36
347
原创 并查集实现
查找过程中发现我的父亲不是根 查找完之后直接把我的父亲改成根。union 将一棵树 加入另一棵树作为子树。查找一次根 会改变树的结构 会路径压缩。find 根据元素查找所在的集合。树退化成了链表 要进行路径压缩。union 两个集合合并。x找到祖先 y也找到祖先。
2024-03-14 22:12:03
357
原创 图论 理论及代码实现
邻接表法 创建一个链表的数组 实际使用会用vector动态数组模拟链表 有权值的情况 用自定义类型。邻接矩阵法 创建二维数组 劣势占用空间太大了。-并查集算法 快速判断两个元素是否在同一集合。-单源最短路径Dijkstra。-图相关的数据结构 邻接表法。-图的遍历 BFS DFS。度:顶点的邻居的数量。
2024-03-14 21:02:37
381
原创 二叉树遍历
step3 不断分解->'#'空叶子 最小问题。step2 读字符构建树。带有空叶子的先序序列。可以唯一确定树的结构。step1 扫描序列。
2024-03-12 09:36:01
347
原创 二叉树建树 遍历
数据域 指针域(left,right,parent)深度优先 递归机制 先序 中序 后序。广度优先 层序遍历 辅助队列。任何二叉树->链式存储。
2024-03-11 07:23:10
379
原创 C++的内存模型、指针、new运算符
支持“指向”:用地址给指针变量赋值。定义语句 表示定义了一个引用。指针变量 是存储地址的变量。非定义语句 表示取地址。所有地址的长度是固定的。
2024-03-09 16:43:04
331
原创 递归与分治 骨牌
用 1×2 和 2×1 的骨牌铺满大小为 2×n 的地板,请问共有多少种不同铺法。原理与斐波那契数列一样,n块骨牌共有f(n-1)+f(n-2)种摆放方法。1.竖着放,那么前面n-1块就有f(n-1)种摆放方法;2.横着放,那么前n-2块就有f(n-2)种摆放方法;最后对999983取模 要用数组保存。设n块骨牌共有f(n)种摆放方法。n=1 只有一种摆放方法。n=2 两种摆放方法。
2024-02-28 08:42:33
364
原创 递归与分治 4_2的幂次方
/思路需要先将 正数按照指数形式进行转化。推出递归的条件 n等于2 或者 n等于0。给定一个数 除基取余得到机器数形式。机器数中哪些比特是1。
2024-02-27 17:39:12
358
原创 递归与分治 不连续1的子串
例如,当 N=3时,答案为 5,因为长度为 3 且不含连续 1 的 01 串一共 5 个:000,001,010,100,101。长度为N不含连续1 末尾0 fact0(n)=fact0(n-1)+fact1(n-1);长度为N不含连续1 末尾1 fact1(n)=fact0(n-1);请计算长度为 N 且不含连续 1 的 01串的个数。能得到两个转移表达式。
2024-02-27 16:35:39
464
原创 C++ 类的使用
类定义是以关键字 class 开头,后跟类的名称。类的主体是包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表。类提供了对象的蓝图,所以基本上,对象是根据类来创建的。声明类的对象,就像声明基本类型的变量一样。
2024-02-23 11:20:54
1308
原创 难题07 奥运排序问题
排序有4种方式: 金牌总数 奖牌总数 金牌人口比例 奖牌人口比例 对每个国家给出最佳排名排名方式 和 最终排名 格式为: 排名:排名方式 如果有相同的最终排名,则输出排名方式最小的那种排名,对于排名方式,金牌总数 < 奖牌总数 < 金牌人口比例 < 奖牌人口比例 如果有并列排名的情况,即如果出现金牌总数为 100,90,90,80.则排名为1,2,2,4. 每组数据后加一个空行。第一行给出国家数N,要求排名的国家数M,国家号从0到N-1。第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万)。
2024-02-21 20:34:21
470
原创 复习26 特殊排序
可能有多组测试数据,对于每组数据, 第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。第二行将排序的结果输出。输入一系列整数,将其中最大的数挑出(如果有多个,则挑出一个即可),并将剩下的数进行排序,如果无剩余的数,则输出-1。输入第一行包括1个整数N,1
2024-02-20 16:33:26
328
原创 复习21 完数vs盈数
输出2到60之间所有“完数”和“盈数”,并以如下形式输出: E: e1 e2 e3 …(ei为完数) G: g1 g2 g3 …(gi为盈数) 其中两个数之间要有空格,行尾不加空格。一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1。若因子之和大于该数,则称其为“盈数”。求出2到60之间所有“完数”和“盈数”。
2024-02-19 20:51:29
338
原创 复习19 日期差值
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD。每组数据输出一行,即日期差值。
2024-02-19 19:55:46
354
原创 复习18 日期累加
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。设计一个程序能计算一个日期加上若干天后是什么日期。输出m行,每行按yyyy-mm-dd的个数输出。
2024-02-19 19:34:01
363
原创 复习16 今年的第几天
输入可能有多组测试数据,对于每一组测试数据, 输出一个整数,代表Input中的年、月、日对应本年的第几天。包括三个整数年(1
2024-02-19 19:12:37
332
原创 难题03 重复者
在这种题目中我们需要解决的问题就是–给定任意某一级图形的任意一个位置, 如何确定这个位置上是什么元素?所以在这个题目中我们只需要对每一个位置进行这种询问并输出, 即可得出所有的这些位置的元素!具体是怎么确定的: 就是通过图形的分布规律不断地使用dfs()从更大的图形深入到最基础的图形即可判断出具体是什么元素!做法比较典型, 几乎所有的这类题目都是一种做法, 我们通常称之为”分形”.
2024-02-19 17:12:33
500
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人