关注

及时了解信息学竞赛相关资讯

第十一届蓝桥杯青少组C++省赛即将到来,待考的各位小同学有没有刷完去年的真题呢?以下是为大家复习准备的“第十届蓝桥杯青少组C++省赛”前三题解题思路及参考答案。祝福大家在考场上取得佳绩!

1

水下探测器

(满分 50 分)

【原理】

水下探测器可以潜入湖中在任意水深进行科学探索。

湖水的最大深度为 h 米,即它在湖底时到水面的距离(0 ≤ h ≤ 100)。

探测器最初的水下深度为 s 米(0 ≤ s ≤ 100),当探测器不在水面(当前深度大于 0)时,每个 u 指令可使它上浮 1 米,而当探测器在水面时,u 指令是无效的;

当探测器不在湖底(当前深度小于 h)时,每个 d 指令可使它下沉 1 米,而当探测器在湖底时,d 指令是无效的; 在执行到无效指令时,探测器不做任何操作而继续执行下一指令。

【编程实现】

根据给定的 h、s 和一个指令序列(由字符 u、d 组成的字符串,长度不超过 100),求出执行完整的指令序列后,探测器的水下深度。

【输入格式】

第一行:h 和 s,以空格分开(0 ≤ s ≤ h ≤ 100);

第二行:长度不超过 100 的指令字符串,串中仅包含字母 u 或 d。

【输出格式】

代表探测器在执行指令后的水下深度的数字。

【输入样例#1】

9 1

uduudd

【输出样例#1】

2

【题目分析】题目考查基础语法、字符串、循环、条件判断。题目相对简单,我们需要依次处理每个指令,根据情况调整探测器的当前深度即可。

 1#include  2#include  3using namespace std; 4 5int main() 6{ 7    int h, s; 8    string str; 9    // 读入水深、探测器的初始位置和指令字符串10    cin >> h >> s >> str;11    // 依次处理每个指令12    for (int i = 0; i <= str.length() - 1; i++) 13    {14        // 对于指令'u',如果不在水面,让探测器上浮15        if (str[i] == 'u' && s > 0) 16        {17            s--;18        }19        // 对于指令'd',如果不在水底,让探测器下沉20        if (str[i] == 'd' && s 21        {22            s++;23        }24    }25    cout <endl; // 输出答案26    return 0;27}

2

小猫吃鱼

(满分 50 分)

【原理】

明明家从 1 号站点出发,开车去旅游,一共要经过 n 个站点,依次为 2、3 ...... n。由于明明带上了心爱的小猫,在每个站点都要为小猫提供一条鱼用做美餐(包括 1 号站点)。

除了 1 号站点只能吃 1 号站点买的鱼,其他站点既可以吃当地买的鱼,也可吃之前经过的站点买了存入车载冰箱中的鱼。 但车载冰箱消耗的电能来自汽油,所以每条鱼用冰箱保存到下一站的费用与各个站点的汽油价格有关。为使问题简化,我们约定:

(1)车从某站开出时油箱中都是此站点刚加的汽油;

(2)车载冰箱能容纳一路上需要的所有鱼。 即:每条鱼的费用既包括购买时的费用,也包括用冰箱保存鱼的费用。

【编程实现】

为了降低小猫吃鱼的总代价,明明预先上网查到了这 n 个站点的鱼价和汽油价格。并据此算出每个站点买一条鱼的费用以及从该站点到下一站用冰箱保存一条鱼的费用。你能帮明明算出这一路上小猫吃鱼的最小总费用吗?

【输入格式】

第一行:站点数 n(1 < n < 100);

接下来的 n 行:每行两个以空格分隔的正整数,表示这一站买一条鱼的费用,以及从这一站把每条鱼保存到下一站的费用,两个费用均为小于 10000 的正整数。

【输出格式】

最小总费用,是一个正整数。

【输入样例#1】

5

6 3

7 1

3 2

8 3

9 5

【输出样例#1】

29

【样例分析】一共五站,对于第一站只能在此站购买,因此花费6;

对于第二站,可以在此站购买也可在前面的站购买,在此站购买花费7,在前面站购买的花费等于上一站最划算的花费加上运到本站的油费6+3=9,因此选择在本站购买;

对于第三站,可以在此站购买也可在前面的站购买,在此站购买花费3,在前面站购买的花费等于上一站最划算的花费加上运到本站的油费7+1=8,因此选择在本站购买;

……

因此,这一路上小猫吃鱼的最小总费用是6+7+3+5+8=29。

【题目分析】题目考查数组及递推算法。题目不难,需要我们在看懂题目描述的基础上能读懂输入输出样例。分析题目我们会发现每一次我们总是在“当前站点的鱼价格”和“上一站最划算的花费+油费”中选取便宜的!

 1#include  2using namespace std; 3 4// a数组存储每个站点的鱼价 5// b数组存储每个站点的油费 6int a[110], b[110]; 7 8int main() 9{10    int n;11    cin >> n;12    // n次循环输入每个站点的鱼价、油费13    for (int i = 1; i <= n; i++) 14    {15        cin >> a[i] >> b[i];16    }17    // 变量minn用来存储之前站点最划算的花费18    // 变量sum存储这一路上的最小总费用19    int minn = 99999, sum = 0;20    for (int i = 1; i <= n; i++) 21    {22        if (a[i] // 当前站的鱼价格更低23        {24            minn = a[i]; // 更新最低花费25        }26        sum += minn; // 累加费用27        // 对于下一站,最低花费min需要加上油费28        minn = minn + b[i]; 29    }30    cout <endl;31    return 0;32}

3

评选最佳品牌

(满分 50 分)

【原理】

n 个评委投票,在 m 个商品中评选一个最佳品牌。评选采用多轮淘汰制,即:每轮投票,淘汰掉得票最少的候选品牌(得票并列最少的品牌一起淘汰)。 如此一轮轮淘汰下去,如果最后只剩下一个品牌当选,即告评选成功。 但如果在某轮投票中,当时未被淘汰的所有候选品牌(大于等于两个品牌)都并列得票最少,即告评选失败。。)

如果评选成功就输出当选品牌号。否则输出最后一轮评选时唯一选票数的相反数。 在评选流程中,每个评委的态度都可用一个序列来表示;例如当 m = 5 时,某评委的评选态度序列为:3、5、1、2、4,则表示该评委:优先投 3 号,当 3 号被淘汰时投 5 号,当 3 和 5 都被淘汰时投 1,当 3、5、1 都 被淘汰时投 2,仅剩 4 号时才投 4 号品牌的票。

选票的序列中可以表示弃权,用 0 来表示,例如当 m = 5 时,某评委的评选态度序列为:3、5、0,则表示该评委:优先投 3 号,当 3 号被淘汰时投 5 号,其它情况下不投任何品牌的票。

【编程实现】

请你编一个程序,模拟各轮投票的过程,得到评选结果。

【输入格式】

第一行:m(0 < m < 10,表示参加评选的品牌数)和 n(1 < n < 1000,表示参加投票的评委数),之间以空格分隔;

接下来的 n 行:每行都是长度不超 m 的数字字符串,每个字符串表示一个评委的评选态度。

【输出格式】

评选结果。

【输入样例#1】

3 4

123

213

132

10

【输出样例#1】

1

【输入样例#2】

3 4

321

213

231

312

【输出样例#2】

-2

【题目分析】题目考查字符串、桶的思想以及模拟算法。需要孩子能够模拟题目描述中的场景将其转变为程序解决问题。

【解题思路】初始时,所有品牌都“活着”,模拟整个投票过程,直至“活着”的品牌数仅剩1或0。

对于每一轮投票,计算每个品牌的票数;初始时,所有品牌的票数归零。

枚举所有评委:对于每个评委的投票序列,通过枚举找到第一个“活着”的品牌,将相应品牌的票数计1。

通过枚举,找出“活着”的品牌中的最低票数,将得票数与最低票数相等的品牌“杀死”。

如果发现这轮结束时,“活着”的品牌数为0,则投票失败,输出最后唯一票数的相反数;

如果整个投票结束,还有1个品牌“活着”,则输出对应品牌。

 1#include  2#include  3#include  4using namespace std; 5 6int n, m; 7bool alive[15]; // 记录每个品牌是否“活着” 8string vote[1005]; // 记录每个评委的投票序列 910int main()11{12    // 读入品牌数、评委数、每个评委的投票序列13    cin >> m >> n;14    for (int i = 1; i <= n; i++)15    {16        cin >> vote[i];17    }1819    // 初始化所有品牌都“活着”,“活着”的总数为读入的品牌数20    memset(alive, 1, sizeof(alive));21    int num = m;2223    while (num > 1) // 模拟整个投票过程,直至“活着”的品牌数小于或等于124    {25        // 定义每个品牌的这一轮票数,初始化为026        int cnt[15];27        memset(cnt, 0, sizeof(cnt));2829        for (int i = 1; i <= n; i++) // 枚举每个评委,唱票计数30        {31            // 枚举每个评委的投票序列,找出他这一轮会投给谁32            for (int j = 0; j 33            {34                if (vote[i][j] == '0') // 这个评委弃权,因为心仪的品牌都“死”了35                {36                    break;37                }38                else39                {40                    // 如果当下枚举到的品牌还“活着”,就投出庄严一票,后续品牌就不必考虑了41                    if (alive[vote[i][j] - '0'])42                    {43                        cnt[vote[i][j] - '0']++; // 字符转为数字,并投票44                        break;45                    }46                }47            }48        }4950        // 找出这轮的最低票数51        int least = n;52        // 通过枚举,将“活着”的品牌的得票数与当下最低票数作比较53        for (int i = 1; i <= m; i++)54        {55            if (alive[i] && cnt[i] 56                least = cnt[i];57        }5859        // 通过枚举,将得票数与这轮最低票数相等的品牌统统“杀死”60        for (int i = 1; i <= m; i++)61        {62            if (alive[i] && cnt[i] == least)63            {64                alive[i] = false;65                num--;66            }67        }6869        // 这轮结束,“活着”的品牌数为0,则投票失败,输出最后唯一票数的相反数70        if (num == 0)71        {72            cout <endl;73        }74    }7576    // 还有1个品牌“活着”,则通过枚举,找到这个品牌并输出77    if (num == 1)78    {79        for (int i = 1; i <= m; i++)80        {81            if (alive[i])82            {83                cout <endl;84            }85        }86    }87    return 0;88}

学而思小猴编程—创造我的未来世界

小猴编程是学而思旗下的少儿编程品牌,通过编程学习,培养孩子的逻辑力创造力合作力,成为人工智能时代的未来创造者。

蓝桥杯单片机十一届省赛_“第十届蓝桥杯青少组C++省赛”前三题解题思路及参考答案!...相关推荐

  1. java迷宫类编程题_第十届蓝桥杯省赛java类B组 试题 E:迷宫 (动态规划之回溯法)...

    问题描述 试题 E: 迷宫 [问题描述] 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方. 010000 000100 001001 110000 迷宫的入口为 ...

  2. 蓝桥杯评分标准_第十届蓝桥杯软件个人赛校内选拔赛评分标准和选拔标准.doc...

    第十届"蓝桥杯"软件个人赛校内选拔赛评分标准和选拔标准 一.竞赛规则 1. 本次"蓝桥杯"校内选拔赛比赛平台: HYPERLINK "" . ...

  3. 蓝桥杯大学组python试题_第十届蓝桥杯2019年C/C++ 大学A组省赛试题

    2019年蓝桥杯第十届软件类省赛 C/C++ 大 学 A 组 试题 A: 平方和 本题总分:5 分 [问题描述] 小明对数位中含有 2.0.1.9 的数字很感兴趣,在 1 到 40 中这样的数包括 1 ...

  4. 蓝桥杯单片机设计与开发_标准模板

    蓝桥杯单片机设计与开发_标准模板 一.前言 首先,这篇文章是笔者第一次在 CSDN 上写博文,较为生疏,读者若有任何意见,欢迎大家在评论区交流! 笔者目前为一名大二学生,参加了2021年蓝桥杯单片机设 ...

  5. 第十届蓝桥杯单片机组(省赛)——试题解答

    前言 本人曾在第十三届蓝桥杯大赛单片机组中获得国一,以下是我在准备比赛过程中的一些记录,希望能给大家带来帮助 本人持续分享更多关于嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共 ...

  6. 第十届蓝桥杯单片机国赛代码实现

    代码如下: #include <STC15F2K60S2.H> #include "iic.h" #include "onewire.h" #inc ...

  7. 第十一届蓝桥杯青少组Python竞赛真题

    第十一届蓝桥省赛Python组复盘 第十一届蓝桥省赛Python组复盘_哔哩哔哩_bilibili 蓝桥杯青少组Python竞赛真题讲解 蓝桥杯青少组Python竞赛真题讲解_哔哩哔哩_bilibil ...

  8. 2019年第十届蓝桥杯 - 省赛 - C/C++研究生组 - G. 扫地机器人

    2019年第十届蓝桥杯 - 省赛 - C/C++研究生组 - G. 扫地机器人 Ideas 首先我们根据数学常识可以知道,当每个机器人清扫的范围差不多时,最好都是 N / K,花的时间应该是最少的. ...

  9. 蓝桥杯java 大纲,2019 第十届蓝桥杯Java省赛B组个人总结

    前言 19年的这场蓝桥杯,对我自己的打击挺大的,以至于时隔多个月之后第十一届蓝桥杯要开始报名的时候,我才敢面对他.报名第十届蓝桥杯的时候我大二,自我感觉学的不错,但事实并非如此,当入了那句话,学术不精 ...

最新文章

  1. java学习之路--零碎的知识笔记
  2. 【学习笔记】树形结构基础
  3. 第三十一讲 非线性微分自治方程组及图解
  4. unity中怎么做河流_【干货】工作中怎么做工业设计的?(一)
  5. 在集设|参透海报设计中提取排版设计灵感
  6. html插一置顶图片,HTML实现置顶--火箭置顶
  7. 基于易智瑞(ArcGIS)JavaScript API的视频融合探索
  8. 互联网舆情监测与分析系统作用及使用功能详解
  9. 多模态生物特征识别文章略读
  10. 程序集定义(Assembly Definition File)
  11. python人名查电话(字典)_Python基础练习——使用字典存储电话薄
  12. WML信息查询与后端信息发布系统实现-java -(报告+源码)
  13. OpenGL基础绘制
  14. Windows CE下的网络监测工具(上)
  15. 弘辽科技跨境电商创业,你了解多少?看老司机怎么说
  16. 2020年蓝桥杯第一次省赛
  17. 全新的移动互联网,互联网营销
  18. access中本年度的四月一日_有朝一日重逢,定会深深地相拥 |为你读诗
  19. Go Channel 应用模式
  20. 红米android system干什么的,Android System Webview是什么东西

热门文章

  1. faster rcnn流程
  2. 训练FCN时遇到的问题总结
  3. javascript闭包,你大爷永远是你大爷
  4. java 并发编程总结
  5. Kotlin 4 构造,对象,修饰符,关键字,委托
  6. python 3 递归调用与二分法
  7. 数据类型转换(针对数字类型)
  8. 树莓派debian配置lamp【解决apache不显示php】
  9. 【转】js之iframe子页面与父页面通信
  10. rc.local自启动学习