蓝桥杯中出现的算法
文章平均质量分 71
[]lambda
这个作者很懒,什么都没留下…
展开
-
高等排序
高等排序之前我们了解了一些复杂度为O(n^2)的低效率排序算法。但是当我们面对庞大的输入数据时,这些初等算法就显得没有什么实用价值了。不过,只要运用我们在前面一章所学的递归与分治法的编程技巧,就可以实现更加高效的算法。本篇仍以之前的例题来结合说明。例题:将给出的一串数字按照从小到大的顺序排,在第1行输入定义数组长度的整数N(N<10000),在第2行输入N个整数,以空格隔开,输出N个整数。例如输入:1 5 3 4 7 9 8输出:1 3 4 5 7 8 9归并排序归并排序,是创建在归并操原创 2020-09-06 09:06:57 · 134 阅读 · 0 评论 -
递归与分治法
将问题分解,通过求解局部性的小问题来解开与原本的问题。这种技巧称为分治法,我们在很多算法中都能看到。这个算法的步骤如下:1.将问题"分解“成局部问题2.递归地求解局部问题3.将局部问题地解”整合“,解决原问题穷举搜索例题:现有长度为n地数列A和整数m。请编写一个程序,判断A中任意几个元素相加是否能够得到m。A中每个元素中能使用1次.数列A以及用作问题的q个m,由外界输入,请对每个问题输出yes或no输入:第1行输入n,第2行输入代表A的n个整数,第3行输入q,第4行输入q个整数m。输出:输原创 2020-09-04 09:02:43 · 290 阅读 · 0 评论 -
搜索问题
搜索是指从数据集合中找出目标元素的处理,与排序相同,搜索的各元素通常也由多个项目组成。本篇例题:从长为N一组数组中找出特定的数M,输出M所在的下标,若没找到该数请输出-1例如输入:871 2 4 6 7 8 5 3输出:4线性搜索线性搜索就是从数组开头开始顺次访问各元素,检查该元素是否与目标值相等。一旦相等则返回该元素的位置并结束搜索。如果检查到数组末尾仍未发现目标值,则返回一个特殊值来说明结果。线性搜索的算法效率很低,但适用与任何形式的数据代码#include<iostream&原创 2020-09-03 09:13:20 · 1179 阅读 · 0 评论 -
排序问题
排序就是将数据按一定顺序重新排列。它是许多算法的基础,可以让数据变得更容易处理。本篇将整理一些相对基础的排序算法。以下算法都是以解答例题的形式说明。例题:将给出的一串数字按照从小到大的顺序排,在第1行输入定义数组长度的整数N(N<10000),在第2行输入N个整数,以空格隔开,输出N个整数。例如输入:1 5 3 4 7 9 8输出:1 3 4 5 7 8 9插入排序法要点:1.取出未排序部分的开头元素赋给变量v2.在已排序部分,将所有比v大的元素向后移动一个单位3.将以取出的元素v插入原创 2020-09-02 16:57:50 · 350 阅读 · 0 评论 -
并查集的经典例题(三)
题目:营救题目描述妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小明被带到了 t 区,而自己在 s 区。该市有 m 条大道连接 n 个区,一条大道将两个区相连接,每个大道有一个拥挤度。小明的妈妈虽然很着急,但是不愿意拥挤的人潮冲乱了她优雅的步伐。所以请你帮她规划一条从 s 至 t 的路线,使得经过道路的拥挤度最大值最小。输入格式第一行有四个用空格隔开的 n,m,s,t,其含义见【题目描述】。接下来 m 行,每行三个整数 u,v,w,表示有一条大道连接区 u 和区 v,且原创 2020-07-27 20:59:53 · 463 阅读 · 0 评论 -
并查集的经典例题(二)
题目:村村通题目描述某市调查城镇交通状况,得到现有城镇道路统计表。表中列出了每条道路直接连通的城镇。市政府 “村村通工程” 的目标是使全市任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要相互之间可达即可)。请你计算出最少还需要建设多少条道路?输入格式输入包含若干组测试测试数据,每组测试数据的第一行给出两个用空格隔开的正整数,分别是城镇数目n和道路数目 m;随后的 m行对应 m 条道路,每行给出一对用空格隔开的正整数,分别是该条道路直接相连的两个城镇的编号。简单起见,城镇从 1 到 n原创 2020-07-27 14:11:39 · 780 阅读 · 0 评论 -
并查集的经典例题(一)
例题:亲戚题目背景:若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。题目描述:规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。输入格式:第一行:三个整数n,m,p,(n<=5000,m<=5000,p<=5000),分别表示有n个人,m个亲戚关系,询问p对亲戚关系。以下m行:每行两个数Mi,Mj,1<=Mi,Mj<=N原创 2020-07-25 13:41:27 · 1485 阅读 · 1 评论 -
蓝桥杯出现过的基本算法---并查集
由于最近需要准备蓝桥杯的c++组比赛,所以特地整理出了一些在蓝桥杯中出现的算法,方便复习并查集1. 作用在遇到一道题之后,我该如何判断该题需要使用到并查集呢?首先我们应该先了解这个并查集是干什么的:并查集是一种树形数据结构,用于处理一些不相交集合的合并及查询问题。也就是说,当题目中出现让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这个时候我们往往就需要考虑构建并查集。2. 基本操作并查集的基本操作有两种:1. 合并 2. 查原创 2020-07-24 22:13:58 · 661 阅读 · 0 评论