目录

试题F:特别数的和

试题G:完全二叉树的权值

试题H:等差数列

试题I:后缀表达式

试题J:灵能传输



试题F:特别数的和

【试题解析】

枚举1-n,取出中满足题意的数累加即可。

#include <iostream>using namespace std;const int N = 10010;int main()
{int n;cin >> n;int res = 0;for(int i = 1; i <= n; i ++) //枚举1-n的所有数{int x = i;while(x){int t = x % 10; //每次取出末位的数if(t == 0 || t == 1 || t == 2 || t == 9) {res += i;break;}x /= 10; //将末位的数移去}}cout << res;return 0;
}

试题G:完全二叉树的权值

【试题解析】

找规律+双指针,双指针i, j依次枚举每层深度的起点和终点,依次记录每层的权值,输出最大权值对应的层数即可。

​
#include <iostream>
#include <cstring>
#include <climits>using namespace std;const int N = 100010;typedef long long LL;int q[N];
int n;int main()
{cin >> n;for(int i = 1; i <= n; i ++)scanf("%d", &q[i]);LL maxv = INT_MIN, res = 0;int depth = 1;for(int i = 1; i <= n; i *= 2) //枚举每一层的起点{LL s = 0;for(int j = i; j <= i * 2 - 1 && j <= n; j ++) //对于每一层的起点i,分析可知终点为i * 2 - 1{s += q[j];   }if(s > maxv){maxv = s, res = depth; //记录最大值及对应的层数}depth ++;}cout << res;return 0;
}​

试题H:等差数列

【题目解析】 

两种做法:1.暴力枚举每一个公差d,找到满足题意的最大公差, 根据 (a[n - 1] - a[0]) / d,

a[n - 1]和a[0]已定,取d最大,即可保证项数最小。

2.枚举任意两个数的差,为kd(k为整数),求出所有kd的最大公约数,即为最大公差。

两种方法在蓝桥杯官网都能AC,但理论上来说第一种暴力的方法时间复杂度为O()会存在被卡数据的情况。

//暴力做法
#include <iostream>
#include <algorithm>using namespace std;const int N = 100010;int a[N];int n;int main()
{cin >> n;for(int i = 0; i < n; i ++) scanf("%d", &a[i]);sort(a, a + n);int d = a[1] - a[0];if(a[n - 1] == a[0])    cout << n; //特判公差为0的情况,此时项数最少即为nfor(int j = d; j >= 1; j --){bool falg = true;for(int i = 1; i < n; i ++){if((a[i] - a[i - 1]) % j){falg = false;break;}}if(falg == true){cout << (a[n - 1] - a[0]) / j + 1;break;}}return 0;
}
//求kd最大公约数的方法
#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;const int N = 1e5 + 10;int gcd(int a, int b)
{return b? gcd(b, a % b) : a;
}int a[N];int n;int main()
{cin >> n;for(int i = 0; i < n; i ++) scanf("%d", &a[i]);sort(a, a + n);int d = a[1] - a[0];if(d == 0)cout << n;else{for(int i = 1; i < n; i ++){d = gcd(d, a[i] - a[0]);}cout << (a[n - 1] - a[0]) / d + 1;}return 0;
}

试题I:后缀表达式

【试题解析】

贪心,摘自AcWing 1247. 后缀表达式+思维图解 - AcWing 的图解,分析可知当M > 0时,我们总可以将M个‘ - ’号化为一个,此时我们只需减去A中的最小值,再加上A中最大值,剩余的数如果大于0我们就加上,小于0就减去。(代码很简单,难在理解如何将M个' - '化为一个' - ')

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>using namespace std;typedef long long LL;int n, m, k;const int N = 2e5 + 10;int a[N];int main()
{cin >> n >> m;k = n + m + 1;for(int i = 0; i < k; i ++) scanf("%d", &a[i]);sort(a, a + k);LL res = 0;if(!m)for(int i = 0; i < k; i ++ )    res += a[i];else{res = res + a[k - 1] - a[0];for(int i = 1; i < k - 1; i ++)res += abs(a[i]); //加上大于0的数和减去小于0的数都可以记为加上该数的绝对值}cout << res;return 0;
}

试题J:灵能传输

【试题解析】

又是一道贪心题,这题没写,转发AcWing 1248. 灵能传输--详细说一些细节 - AcWing大佬的题解

#include "bits/stdc++.h"using namespace std;typedef long long LL;const int N = 3e5 + 10;int t, n;
LL s[N], a[N]; // s为前缀和数组 a为存放前缀和顺序的数组
bool st[N];int main()
{cin >> t;while (t--){cin >> n;memset(st, 0, sizeof st);for (int i = 1; i <= n; i++)cin >> s[i], s[i] += s[i - 1];LL s0 = s[0], sn = s[n];if (s0 > sn)swap(s0, sn);sort(s, s + n + 1);// 寻找排完序后s0和sn的位置// 如果s0和sn相同的话则前面的为s0 后面的为snfor (int i = 0; i <= n; i++)if (s[i] == s0){s0 = i;break;}for (int i = n; i >= 0; i--)if (s[i] == sn){sn = i;break;}int l = 0, r = n;for (int i = s0; i >= 0; i -= 2){a[l++] = s[i];st[i] = 1;}for (int i = sn; i <= n; i += 2){a[r--] = s[i];st[i] = 1;}for (int i = 0; i <= n; i++)if (!st[i])a[l++] = s[i];LL res = 0;for (int i = 1; i <= n; i++)res = max(res, abs(a[i] - a[i - 1]));cout << res << endl;}return 0;
}

第十届蓝桥杯B组C/C++省赛编程题题目及答案解析相关推荐

  1. 第九届蓝桥杯JavaA组(2018年)省赛真题解析

    第九届蓝桥杯JavaA组(2018年)省赛真题解析 1.分数 1/1+1/2+1/4+1/8+1/16+- 每项是前一项的一半,如果一共有20项,求这个和是多少 结果用分数表示,类似: 3/2,当然这 ...

  2. 2019第十届蓝桥杯A组决赛(国赛)A题(三升序列)

    2019第十届蓝桥杯A组决赛(国赛)A题(三升序列) 输入: VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG SDLLOVGRTWEYZKKXNK ...

  3. 第十届蓝桥杯JavaB组省赛真题

    试题 A: 组队 本题总分:5 分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容. 每位球员担任 1 号位至 5 号位时的评分如下表所示. ...

  4. 第十届蓝桥杯JavaC组省赛真题

    试题 A: 求和 本题总分:5 分 [问题描述] 小明对数位中含有 2.0.1.9 的数字很感兴趣,在 1 到 40 中这样的数包 括 1.2.9.10 至 32.39 和 40,共 28 个,他们的 ...

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

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

  6. 第十届蓝桥杯JavaB组总结

    去年参加了第九届蓝桥杯C/C++B组,很捞,做了大概5道题,就好像就做对了2道结果填空题,编程题只做了一个(只通过了部分测试数据),最后拿了个省三,但是班上那些平时没有认真准备的都拿了省二 今年想好好 ...

  7. 2019第十届蓝桥杯CB组国赛心得

    一年一度的传说中的"暴力"杯又过去了,今年是第一次参加蓝桥杯省赛跟国赛,今天刚从北京回来,觉得应该写点东西,觉得不能再叫蓝桥杯暴力杯了当然大佬觉得还是暴力还请忽略,要改名了,今年难 ...

  8. 2019年第十届蓝桥杯B组决赛

    一.平方末尾 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 能够表示为某个整数的平方的数字称为"平方数" 虽然无法立即说出某个数是平方数,但经 ...

  9. 2019蓝桥杯Java决赛题答案_2019第十届蓝桥杯JavaB组省赛真题详解

    目录 题解待更新 第一题:组队 题目描述 做为篮球队教练,你须要从如下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容. 每位球员担任 1 号位至 5 号位时的评分以下表所示.请你计算 ...

  10. 2019年第十届蓝桥杯JAVAB组-----试题 J: 分考场

    题目: [问题背景] 古语有云:春风得意马蹄疾,一日看尽长安花. 当然在一场考试中所有人都春风得意马蹄疾是不可能的,尤其是碰到一些毒瘤出题人的时候. [问题描述] 又到了每月一次的月考,又是 xf 老 ...

最新文章

  1. ICLR2021 | 清华大学黄高团队:显存不够?不妨抛弃端到端训练
  2. 实现Excel数据导入到SQL2005中的方法(回顾)
  3. 如何自动保存 Spring Boot 应用进程号?
  4. 转载:身体器官工作表一览,睡觉别太晚了
  5. win10设置默认输入法_为什么说win10越来越好用了?(技巧篇)
  6. dedecms--在后台增加会员添加
  7. 深入了解帆软报表系统的启动过程三
  8. sublime text3的一些小技巧记录(配gif图)
  9. 输入框输入文字字符匹配
  10. QQ连连看 逆向分析外挂制作报告【脱壳ASPPack】【模拟点击】【内联HOOK】
  11. 数据结构:图(Graph)【详解】
  12. 用极致业务基础平台研发的族谱管理软件
  13. 单片机编程入门基础知识(新手必看)
  14. 关于英文论文写作的初步总结和资料推荐
  15. 一种基于STM32F1 MCU的增量型编码器测速的方法
  16. spark 相关性分析_《Spark机器学习进阶实战》——2.3.2 相关性分析
  17. 全国高考今日开启 报名人数再创历史新高 2022全国高考时间科目安排 优积科技-祝同学们高考顺利
  18. JQuery之append和appendTo的区别,还有js中的appendChild用法
  19. 计生委称老龄化是社会进步表现 暂不放开二胎--如此之文章一定要转载,等待鞭尸...
  20. Web Service技术的SOAP实现

热门文章

  1. 使用免费的Spire.Pdf.dll打印无水印的PDF文件
  2. 计算机留言板毕业论文摘要,留言板系统设计(毕业论文)
  3. 《Java和Android开发实战详解》
  4. UnityHub下载缓存位置
  5. unity通过服务器地址下载文件
  6. Java快逸报表展现demo_快逸报表展示图片—来自本地/网络的图片
  7. 金蝶如何修改服务器IP,金蝶服务器ip地址修改
  8. 【备忘】Java教学系列视频教程 孔浩老师 千课巨献全网最全 共26G
  9. 自动控制原理第七版胡寿松课后答案
  10. 《王道计算机考研》:应用层