2016SDAU课程练习四
文章平均质量分 63
WiseDoge
未来的IT民工
展开
-
练习4——图论总结
在最后一个专题,我们学习了图论,了解了什么是图,一些常见的图,以及一些图算法。 图的概念图是由顶点集合以及顶点间的关系的集合组成的一种关系的数学表示。几种常见的图有向图:图中的边是有方向的。E (x ,y) 和E ( y ,x)表示的边不同。无向图:图中的边是没有方向的。完全图(暂时还没有接触过):n个顶点的图两两连边,即有 n(n-1)/2条边。 图的表示邻接矩阵(Adja原创 2016-06-26 14:56:11 · 804 阅读 · 0 评论 -
练习四 1009
概述:在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?思路:从一个无向图中给定的一个顶点,求这个定点到其他任意点权值和的最小值,应该使用Dijkstra算法,我我们从1点开始搜索,逐步寻找离他最近的点,每个点到1点的最短距离用d[i]表原创 2016-06-20 09:44:02 · 1175 阅读 · 0 评论 -
练习四 1006
概述:也是修路问题,给定一个地图,求修路的最小花费。思路:最小生成树的题目,这次使用的Prim算法,选一个节点放到数组中,找出和他相邻的最便宜的节点,再把这个节点放到数组中,然后继续重复这个步骤,金钱也不断的累加,最后输出金钱数目即可。感想:感觉前6个题,用一套代码改改就行。。。#include #include #include #include const long原创 2016-06-19 11:25:33 · 397 阅读 · 0 评论 -
练习四 1005
概述:省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。思路:此题在1004题的基础上做了些许改动,即有些城镇之间早已有了路,把这个描述转化成代码的话很简单,只要让这条边的权值为0即可,这原创 2016-06-18 08:50:40 · 533 阅读 · 0 评论 -
练习四 1002
概述:在平面坐标系中给你一些孤立的点,求把这些点联系起来的最小路程。思路:这是经典最小生成树问题的一个变种,因为点的坐标是Double型的,所以比较难像其他题一样用位置表示点的根节点,所以,要从新给每个输入的点分配一个ID,然后就转化为经典的问题了。在这里我采用的仍然是Kruskal算法。感想:无。#include #include #include #include #inc原创 2016-06-18 08:46:13 · 518 阅读 · 0 评论 -
练习四 1019
概述:有一个物种的一些个体,给出一些数对x,y,表示x和y不是一种性别,然后给出许多数对,问有没有矛盾。思路:分组并查集,用两个并查集,表示两种性别,然后不断的合并,如果有冲突,就终止,否则就一直合并,最后输出结果。感想:很有实际意义的问题。#include #include #include #include using namespace std;const int MA原创 2016-07-01 12:47:25 · 455 阅读 · 0 评论 -
练习四 1011
概述:虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给自己好原创 2016-07-01 12:15:38 · 486 阅读 · 0 评论 -
练习四 1003
概述:某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?思路:并查集问题,只要找出根节点的数目即可,很简单。感想:第一节课听老师讲了,第二节课立刻去A了,感觉比较简单。#include #include #原创 2016-06-14 21:26:52 · 451 阅读 · 0 评论 -
练习四 1004
概述:给你一些镇子,和镇子之间的距离,现在要修一条路,把所有镇子连起来,求路的最短距离。思路:最小生成树问题,我采用的还是KRUSKAL是第一题的简化版,详情请看第一题。感想:刷了第一题,再看这个题,感觉好简单。#include #include #include using namespace std;const int N = 105;int father[N];int原创 2016-06-14 21:23:02 · 470 阅读 · 0 评论 -
练习四 1001
概述:给你一些城镇,以及各个镇之间的距离,现在要修建道路,把这些镇子穿起来,已知一些镇子之间已经有了道路(即不用再修了),现在求施工的最短路径。思路:这是最小生成树问题,我采用的是kruskal算法。感想:“一些镇子之间已经有了道路”这个条件比较难缠,想了一会才明白,只要另这些镇子的距离为0就可以,这样就不会影响结果。#include #include #include usin原创 2016-06-14 21:18:17 · 598 阅读 · 0 评论 -
练习四 1022
概述:龙珠分布在许多城市,而且,经过一段时间之后,一些城市的龙珠就会被运送到其他的城市,如果是输入T a b,那么进行移动, 把编号a的龙珠所在的城市的所有龙珠移动到编号b龙珠所在的城市。输入Q a, 那么输出a龙珠所在的城市, a龙珠所在城市有的龙珠的个数, 以及a龙珠移动的次数。思路:也是一个简单的并查集问题,继续套用 find 和 merge 函数。感想:这个题和1023是一原创 2016-06-27 16:49:59 · 317 阅读 · 0 评论 -
练习四 1023
概述:在一个会场举行文艺演出,安排坐区,编号为B的人必须在编号为A顺时针方向X,给你一些规则,找出不正确的,输出个数。思路:带权值的并查集问题,在该题中可以转化为List[b] = List[x] + m - List[y],基本的find和merge函数和其他的并查集类问题一样。感想:没想到简单的题在后面。#include #include #include #includ原创 2016-06-27 16:32:52 · 424 阅读 · 0 评论 -
练习四 1012
概述:n*m大小的矩形,起点在矩形的左上角, 终点在右下角,里面一个小矩形代表一个街区(block)。每个小矩形的边长都是2520, 小矩形的边有一个速度限制,范围是0~9, 如果是0表示这条边不能行驶。思路: 绝对是一道水题。每一条边是 "数字"+“空格”+“符号”的形式, 数字表示这条边的限速, 符号表示这条路是单向(还分东西, 南北)的还是双向的。处理完复杂的输出和读取问题之后,用Di原创 2016-06-26 15:25:45 · 582 阅读 · 0 评论 -
练习四 1008
概述:给你一个不成环的图,让你在只能构成一个环的情况下,求出这个环的权值和的最大值思路:并查集问题,还是按照以前的套路,当边上的两个节点的根节点相同时,会构成环,这时候就要考虑是构成一个环还是构成两个环,如果构成一个环,那么保留,如果是两个环,就舍弃,把整个图遍历之后,输出最大值即可感想:在处理是否成环的时候要谨慎对待。#include#include#include#inclu原创 2016-06-20 10:10:35 · 522 阅读 · 0 评论