没有合适的资源?快使用搜索试试~ 我知道了~
首页蓝桥杯18年算法训练试题精选:区间查询、公倍数与动态规划解题技巧
蓝桥杯18年算法训练试题精选:区间查询、公倍数与动态规划解题技巧
需积分: 50 38 下载量 89 浏览量
更新于2024-07-18
收藏 3.01MB PDF 举报
本资源是一份针对2018年蓝桥杯竞赛的算法训练试题集,包含了181道题目,涵盖了C语言和算法相关的多个知识点。这些题目旨在提升参赛者的编程能力和算法理解。 首先,ALGO-1是区间k大数查询排序查找问题,涉及数据结构和排序算法。参赛者需要设计一种方法,给定一个长度为n的整数序列,支持查询第l到r个数中第K大的数。这个问题挑战了选手在空间和时间复杂度上的优化技巧,同时考察了对快速排序或优先队列等算法的运用。 ALGO-2是最大最小公倍数贪心问题,要求找出1到N中任选三个数,使得它们的最小公倍数最大。这涉及到数论知识,特别是对于如何寻找最大公约数和最小公倍数的理解,以及贪心策略的应用。 ALGO-3是关于K好数的动态规划问题,K好数定义为在K进制表示中任意相邻位不相同。参与者需要计算L位K进制数中K好数的数量,并对结果取模。这是一个典型的动态规划问题,需要设计状态转移方程,并考虑边界条件和优化处理大数问题。 ALGO-4是树形动态规划问题,针对一棵有n个节点的树,每个节点有正整数值,且选择节点时不能选相邻节点。目标是找到权值和最大的节点组合。这要求参赛者理解并应用树的遍历方法,如深度优先搜索或广度优先搜索,以及动态规划的思想来求解最优解。 这些题目不仅测试了参赛者的编程基础,还锻炼了解决实际问题的能力和对不同算法策略的选择和应用。通过解决这些问题,参赛者能够提升算法设计、数据结构理解和优化技能,为后续的IT职业生涯打下坚实的基础。
资源详情
资源推荐
12
7
9
7
样例输出
0
ALGO-22 数的划分 动态规划
问题描述
将整数 n 分成 k 份,且每份不能为空,任意两份不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5; 1,5,1; 5,1,1;
问有多少种不同的分法。
输入格式
n,k
输出格式
一个整数,即不同的分法
样例输入
7 3
样例输出
4 {四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;}
数据规模和约定
6<n<=200,2<=k<=6
ALGO-23 一元三次方程求解 解方程
问题描述
有形如:ax
3
+bx
2
+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,
b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100 至 100 之间),且
根与根之差的绝对值>=1。要求三个实根。。
输入格式
四个实数:a,b,c,d
输出格式
由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后 2
位
样例输入
1 -5 -4 20
样例输出
-2.00 2.00 5.00
数据规模和约定
|a|,|b|,|c|,|d|<=10
ALGO-24 统计单词个数 字符串
问题描述
给出一个长度不超过 200 的由小写英文字母组成的字母串(约定;该字串以每行 20 个字
母的方式输入,且保证每行一定为 20 个)。要求将此字母串分成 k 份 (1<k<=40),且每份
中包含的单词个数加起来总数最大(每份中包含的单词可以部分重叠。当选用一个单词之
后,其第一个字母不能再用。例 如字符串 this 中可包含 this 和 is,选用 this 之后就不能
包含 th)。
单词在给出的一个不超过 6 个单词的字典中。
要求输出最大的个数。
输入格式
第一行有二个正整数(p,k)
p 表示字串的行数;
k 表示分为 k 个部分。
接下来的 p 行,每行均有 20 个字符。
再接下来有一个正整数 s,表示字典中单词个数。(1<=s<=6)
接下来的 s 行,每行均有一个单词。
输出格式
每行一个整数,分别对应每组测试数据的相应结果。
样例输入
1 3
thisisabookyouareaoh
4
is
a
ok
sab
样例输出
7
数据规模和约定
长度不超过 200,1<k<=40,字典中的单词数不超过 6。
ALGO-25 Car 的旅行路线 最短路
问题描述
又到暑假了,住在城市 A 的 Car 想和朋友一起去城市 B 旅游。她知道每个城市都有四
个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一 条笔直的高
速铁路,第 I 个城市中高速铁路了的单位里程价格为 Ti,任意两个不同城市的机场之间均
有航线,所有航线单位里程的价格均为 t。
那么 Car 应如何安排到城市 B 的路线才能尽可能的节省花费呢?她发现这并不是一个简
单的问题,于是她来向你请教。
找出一条从城市 A 到 B 的旅游路线,出发和到达城市中的机场可以任意选取,要求总
的花费最少。
输入格式
的第一行有四个正整数 s,t,A,B。
S 表示城市的个数,t 表示飞机单位里程的价格,A,B 分别为城市 A,B 的序号,
(1<=A,B<=S)。
接下来有 S 行,其中第 I 行均有 7 个正整数 xi1,yi1,xi2,yi2,xi3,yi3,Ti,这当
中的(xi1,yi1),(xi2,yi2),(xi3,yi3)分别是第 I 个城市中任意三个机场的坐标,T I 为第
I 个城市高速铁路单位里程的价格。
输出格式
共有 n 行,每行一个数据对应测试数据,保留一位小数。
样例输入
1
1 10 1 3
1 1 1 3 3 1 30
2 5 7 4 5 2 1
8 6 8 8 11 6 3
样例输出
47.55
数据规模和约定
0<S<=100,
ALGO-26 麦森数 二分 高精度
问题描述
形如 2
P
-1 的素数称为麦森数,这时 P 一定也是个素数。但反过来不一定,即如果 P 是
个素数,2
P
-1 不一定也是素数。到 1998 年底,人们已找到了 37 个麦森数。最大的一个是
P=3021377,它有 909526 位。麦森数有许多重要应用,它与完全数密切相关。
任务:从文件中输入 P(1000<P<3100000),计算 2
P
-1 的位数和最后 500 位数字
(用十进制高精度数表示)
输入格式
文件中只包含一个整数 P(1000<P<3100000)
输出格式
第一行:十进制高精度数 2
P
-1 的位数。
第 2-11 行:十进制高精度数 2
P
-1 的最后 500 位数字。(每行输出 50 位,共输出 10
行,不足 500 位时高位补 0)
不必验证 2
P
-1 与 P 是否为素数。
样例输入
1279
样例输出
386
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000104079321946643990819252403273640855
38615262247266704805319112350403608059673360298012
23944173232418484242161395428100779138356624832346
49081399066056773207629241295093892203457731833496
61583550472959420547689811211693677147548478866962
50138443826029173234888531116082853841658502825560
46662248318909188018470682222031405210266984354887
32958028878050869736186900714720710555703168729087
ALGO-27 FBI 树 树 遍历
问题描述
我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为 B 串,全“1”串称为 I 串,
既含“0”又含“1”的串则称为 F 串。
FBI 树是一种二叉树,它的结点类型也包括 F 结点,B 结点和 I 结点三种。由一个长度
为 2
N
的“01”串 S 可以构造出一棵 FBI 树 T,递归的构造方法如下:
1)T 的根结点为 R,其类型与串 S 的类型相同;
2)若串 S 的长度大于 1,将串 S 从中间分开,分为等长的左右子串 S1 和 S2;由左子
串 S1 构造 R 的左子树 T1,由右子串 S2 构造 R 的右子树 T2。
现在给定一个长度为 2
N
的“01”串,请用上述构造方法构造出一棵 FBI 树,并输出它的
后序遍历序列。
输入格式
第一行是一个整数 N(0 <= N <= 10),第二行是一个长度为 2
N
的“01”串。
输出格式
包括一行,这一行只包含一个字符串,即 FBI 树的后序遍历序列。
样例输入
3
10001011
样例输出
IBFBBBFIBFIIIFF
数据规模和约定
对于 40%的数据,N <= 2;
对于全部的数据,N <= 10。
注:
[1] 二叉树:二叉树是结点的有限集合,这个集合或为空集,或由一个根结点和两棵
不相交的二叉树组成。这两棵不相交的二叉树分别称为这个根结点的左子树和右子树。
[2] 后序遍历:后序遍历是深度优先遍历二叉树的一种方法,它的递归定义是:先后
序遍历左子树,再后序遍历右子树,最后访问根。
ALGO-28 星际交流 排列生成算法
问题描述
人类终于登上了火星的土地并且见到了神秘的火星人。人类和火星人都无法理解对方
的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样 的,首
先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一
个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回 答。
火星人用一种非常简单的方式来表示数字——掰手指。火星人只有一只手,但这只手
上有成千上万的手指,这些手指排成一列,分别编号为 1,2,3……。火星人的任意两根手
指都能随意交换位置,他们就是通过这方法计数的。
一个火星人用一个人类的手演示了如何用手指计数。如果把五根手指——拇指、食
指、中指、无名指和小指分别编号为 1,2,3,4 和 5,当它们按正常顺序排列 时,形成
了 5 位数 12345,当你交换无名指和小指的位置时,会形成 5 位数 12354,当你把五个手
指的顺序完全颠倒时,会形成 54321,在所有能够形 成的 120 个 5 位数中,12345 最
小,它表示 1;12354 第二小,它表示 2;54321 最大,它表示 120。下表展示了只有 3
根手指时能够形成的 6 个 3 位数和它们代表的数字:
三进制数
123
132
213
231
312
321
代表的数字
1
2
3
4
5
剩余141页未读,继续阅读
熊孩子杨杨
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JDK 17 Linux版本压缩包解压与安装指南
- C++/Qt飞行模拟器教员控制台系统源码发布
- TensorFlow深度学习实践:CNN在MNIST数据集上的应用
- 鸿蒙驱动HCIA资料整理-培训教材与开发者指南
- 凯撒Java版SaaS OA协同办公软件v2.0特性解析
- AutoCAD二次开发中文指南下载 - C#编程深入解析
- C语言冒泡排序算法实现详解
- Pointofix截屏:轻松实现高效截图体验
- Matlab实现SVM数据分类与预测教程
- 基于JSP+SQL的网站流量统计管理系统设计与实现
- C语言实现删除字符中重复项的方法与技巧
- e-sqlcipher.dll动态链接库的作用与应用
- 浙江工业大学自考网站开发与继续教育官网模板设计
- STM32 103C8T6 OLED 显示程序实现指南
- 高效压缩技术:删除重复字符压缩包
- JSP+SQL智能交通管理系统:违章处理与交通效率提升
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功