当前位置: 首页 > news >正文

2024年蓝桥杯B组C++——复盘

 1、握手问题

知识点:模拟

        这道题很简单。但是不知道考试的时候有没有写错。一开始的43个人握手,仅需要两两握手,也就是从42个握手开始,而非43.很可惜。这道题没有拿稳这5分。也很有可能是这5分导致没有进决赛。

总结:
1、将题目要求的大的数值进行抽象出来,例如写成一个变量m,n。
2、然后,使用较小的数字,将m设置为5,n设置为3。
3、然后手算看看结果是否与程序相同。
4、相同的话,再使用题目要求的数值填入n和m中。

#include<bits/stdc++.h>
using namespace std;
long long cnt;
const int n = 50;  // 总人数
const int m = 43;  // 无需特殊处理的人数
int main()
{// 先处理前面没有限制的43个人。  他们之间两两握手for (int i = m-1; i >= 1; i--)  // 注意这里不是43,而是42{cnt += i;}// 后处理有限制的7人  他们分别与上述43人握手cnt += 43 * (n-m);cout << cnt;return 0;
}

2、小球反弹

看着很难,考试的时候直接放弃了,现在也没有去写正解。

3、好数

知识点:模拟

        逻辑非常简单,10分钟不到就能够写出来。但是考试的时候很紧张,写了20分钟。没有很清晰的写出下标之间的关系,当时很乱。
        最终结果:100分。折算后:10分

#include<bits/stdc++.h>
using namespace std;
int n;
int cnt;
int main()
{cin >> n;for (int i = 1; i <= n; i++){string str = to_string(i);int len = str.size();  // 获取数字的长度int b = 1;  // 当前位数int j;for (j = len - 1; j >= 0; j--)  // 从数字末尾开始判断{if (b % 2 == 1)  // 需要检测当前奇数位数的数值为奇数{if (str[j] % 2 == 1){b++;continue;}elsebreak;}else  // 检测当前偶数位的数值是否为偶数{if (str[j] % 2 == 0)b++;elsebreak;}}if (j == -1)cnt++;}cout << cnt << endl;return 0;
}

4、R格式

 知识点:高精度。

        高精度类型的题目我几乎没有做过。所以当时看到是很慌的。本题浮点数的位数很大,我仅仅使用double进行存储,肯定只能通过极少数的测试样例。
        最终结果:本题拿到24分。折算为题目的分数就是:10*0.24 = 2.4分

        当时考试过程中,想到了使用string来存储,但是写了半天,还是不知道怎么处理。
        最终写出来的效果是:string解决位数较低的情况,和直接使用double存储应该没两样。当时还不如直接使用double存储。。。
        后面想着时间还剩多的话,就回来写用string解决位数较高的情况。但是后面还是没能回来。

#include<bits/stdc++.h>
using namespace std;
int n;
double d;
int main()
{cin >> n >> d;long long temp = pow(2, n);double pre = d * temp;// 进行四舍五入——采用笨方法string str = to_string(pre);int i;for (i = 0; i < str.size(); i++){if (str[i] == '.')break;}// 判断小数点后一位是否小于5if (str[i + 1] < 5)cout << int(pre) << endl;else{cout << int(pre) + 1 << endl;}return 0;
}

5、宝石组合

知识点:最大公因数、最小公倍数、XXX
        考试中,看到题目,就想到了使用dfs,dfs在考试前,自己练了好多道题目了。后来发现,直接使用for循环,也可以得到答案。很像没有必要使用dfs。考试中,浪费了很多时间进行dfs编码,最终写的还是简单的for循环。
经验:
1、写完gdc和lcm函数后,先测试一下。
2、先想出整个题目的思路,再进行编码。
3、先想想有没有什么简单的思路,在考试中先使用简单的思路进行求解。有时间再回来写正解。

结果:时间超时,但是拿到了33分。折算后就是:15*0.33 = 5分

#include<bits/stdc++.h>
using namespace std;
int n;
long long Max = -1;
int res[3];
int gcd(int a, int b)
{while (a % b != 0){int r = a % b;a = b;b = r;}return b;
}int lcm(int a, int b)
{return a * b / gcd(a, b);
}
int main()
{cin >> n;vector<int> v(n, 0);for (int i = 0; i < n; i++){cin >> v[i];}sort(v.begin(), v.end());for (int i = 0; i < n; i++){for (int j = i + 1; j < n; j++){for (int k = j + 1; k < n; k++){long long p1 = v[i] * v[j] * v[k];long long p2 = lcm(v[i], v[j]);long long p3 = lcm(v[i], v[k]);long long p4 = lcm(v[j], v[k]);long long p5 = lcm(p2, v[k]);long long temp = p1 * p5 / (p2 * p3 * p4);if (temp > Max){Max = temp;res[0] = v[i];res[1] = v[j];res[2] = v[k];}}}}for (int i = 0; i < 3; i++){cout << res[i] << " ";}return 0;
}

 6、数字接龙

知识点:dfs、bfs

        老毛病了:写了40分钟,发现自己题目都没有完全搞懂。思路没有捋顺就开始编程。
        中途发现,自己平时练习的bfs和本题还是有区别的。这道题还要存储路径过程。我很少练这个。
        最终考试提交的就是一堆不完整的代码。但是写了-1的情况,所以花了40分钟,最终和花1分钟写的效果一样。

        出乎意料的是,直接输出-1居然在dot.cpp网站上能通过超过一半的测试样例, 拿到了55分!!!折算后:15*0.55 = 8分

#include<bits/stdc++.h>
using namespace std;
int main()
{cout << -1 << endl;return 0;
}

 7、爬山

知识点:贪心算法
        使用贪心策略,只考虑当前的最优解。即,先对高山进行大到小排序,魔法提前使用。
        这样子写肯定不是正解,但是在考场上,我当时的水平只能这么写着先了。

        考场上的策略不太行,应该使用别的策略。
        我当时想的是:排完序后,就对山施展魔法,直至改山比第二座山低,就对下一座山施展魔法。
        现在回想起来,存在漏洞,第一座山比第二座山低了之后,应该将第一座山插至山序列的恰当位置,而非不处理。

        以下程序是修复漏洞后的程序,通过3个测试用例,其余测试用例超时。有一个测试用例答案错误。得分:25。折算后:20*0.25 = 5

其实这题,要是不清楚优先使用魔法1还是2,也可以专门写一个针对20%的测试用例的,只使用魔法2。

#include<bits/stdc++.h>
using namespace std;
int n;
int p;
int q;
//bool cmp(int a, int b)
//{
//	return a > b;
//}int main()
{cin >> n >> p >> q;vector<int> v(n, 0);for (int i = 0; i < n; i++){cin >> v[i];}sort(v.rbegin(), v.rend());  // 递减排序// 求不等式:x/2>根号x    求得:当x>4时,使用/,即使用魔法2时,作用效果没有使用魔法1的好。/*易错点:上述条件对于实数成立。但是题目中,魔法2还可以向下取整。当x<=4时,均为魔法2的效果更加。当x = 5时,使用魔法1,变成了2.23; 使用魔法2,变成了2  魔法2更佳当x = 6时,使用魔法1,变成了2.4;  使用魔法2,变成了3  魔法1更佳当x = 7时,使用魔法1,变成了2.6;  使用魔法2,变成了3  魔法1更佳综上所属,x<=5时,使用魔法2;x>5时,使用魔法1*/// 始终都对第一座最大的山使用魔法while (p || q){if (v[0] > 5)  // 优先使用魔法1{if (p > 0)  // 魔法1还可以使用{v[0] = sqrt(v[0]);if (n > 1){if (v[0] < v[1]) //使用魔法后比后面的小,需要重新排序sort(v.rbegin(), v.rend());}p--;}else{if (q > 0){v[0] /= 2;if (n > 1){if (v[0] < v[1]) //使用魔法后比后面的小,需要重新排序sort(v.rbegin(), v.rend());}q--;}}}else // 优先使用魔法2{if (q > 0)  {v[0] /= 2;if (n > 1){if (v[0] < v[1]) //使用魔法后比后面的小,需要重新排序sort(v.rbegin(), v.rend());}q--;}else{if (p > 0)  // 魔法1还可以使用{v[0] = sqrt(v[0]);if (n > 1){if (v[0] < v[1]) //使用魔法后比后面的小,需要重新排序sort(v.rbegin(), v.rend());}p--;}}}}long long ans = 0;for (int i = 0; i < n; i++){ans += v[i];}cout << ans;return 0;
}

8、接龙

知识点:前缀和

        这道题考试的时候没有做,直接输出的用例答案,应该0分。
        本次考试过程中,我很多题目都太渴望求正解,以致于解决速度慢,还不如直接暴力解。
再加上紧张所以编程不能冷静,return 0 又没有写,第一题又粗心了。所以排名二等奖垫底。
        要是解决上述问题,并且把拔河这题写了,就能够拿到省一了!!!
        考试的时候,没有注意到题目说明了所选的每组人编号是连续的。且第2组人编号一定大于第1组人的
        自己考试的时候,把题目想复杂了,以致于这道题没有进行解答。

        解法一:选上所有选手,但题目并未这么要求。
        答案错误。通过一个测试用例,答案拿了9分。折算后为:20*0.09= 1.8

#include<bits/stdc++.h>
using namespace std;
int n;
int Min = 1e9;
int main()
{cin >> n;vector<int> v(n + 1, 0);vector<long long> vs(n + 1, 0);for (int i = 1; i <= n; i++){cin >> v[i];vs[i] = vs[i - 1] + v[i];}for (int i = 1; i < n; i++)  // 第一组选择前i个人,第一组不可能选所有人,否则第2组没人可选了。{long long grp1 = vs[i];long long grp2 = vs[n] - vs[i];long long temp = abs(grp1 - grp2);if (temp < Min)Min = temp;}cout << Min << endl;return 0;
}

        解法2:使用了4层循环,标记选手范围的l1,r1,l2,r2。非常好理解。注意一下下标,不要写错即可。
        通过3个测试用例。得分27,超时。折算后:20*0.27 = 5.4 

#include<bits/stdc++.h>
using namespace std;
int n;
int Min = 1e9;
int main()
{cin >> n;vector<int> v(n + 1, 0);vector<long long> vs(n + 1, 0);for (int i = 1; i <= n; i++){cin >> v[i];vs[i] = vs[i - 1] + v[i];}for (int l1 = 0; l1 < n; l1++)  // l1位置{for (int r1 = l1 + 1; r1 < n; r1++)  // r1位置{long long grp1 = vs[r1] - vs[l1];for (int l2 = r1; l2 <= n; l2++){for (int r2 = l2 + 1; r2 <= n; r2++){long long grp2 = vs[r2] - vs[l2];long long temp = abs(grp1 - grp2);if (temp < Min)Min = temp;}}}}cout << Min << endl;return 0;
}

经验总结:

1、看清楚题目限制条件。

        例如:题目讲到的拔河人数序号一定是递增的——这就导致不会说,有1、2、3、4、5个人,选15一组,24一组。而是一定是选连续的人为1组。这就极大地简化了题目的难度。

2、比赛过程中,不要总是想着上来就求解正解。而是先去尝试纯暴力解法,以节约时间。

        有时候题目纯暴力也需要花很多时间来解决。先做出了纯暴力的解法,留够充足的时间后面再做正解,而且前面的纯暴力会为后续提供思路的。

3、一定一定有了完整的思路、明确这么做是正确的(超时也没关系),才开始编程。

        编程切忌没有思路,或者是有了一丢丢思路就开始编程。这样子的效率极低。而且容易在遇到某个解决不了的问题时,前功尽弃,徒劳而费。

4、学会使用抽象编程。

        例如第一题,将某个变量抽象后,就可以使用某个数值较小的测试用例来检验程序的正确,以保证不因粗心丢分。

5、今天静下心来,没有压力的情况下,拿了40.5分。这个分数应该可以拿省一的。

        感觉自己练的题目也不少,但是自己最终拿到的奖项还是有点弱了。还是自身应试能力不强,编程经验缺乏,水平没有发挥到位。如果有小伙伴想要冲蓝桥杯省一的,一定要提前跟着网上的视频,覆盖知识点后,再进行刷题。题目不管难易,都从暴力解出发,正确每道题目都能拿下一定的分数。

相关文章:

2024年蓝桥杯B组C++——复盘

1、握手问题 知识点&#xff1a;模拟 这道题很简单。但是不知道考试的时候有没有写错。一开始的43个人握手&#xff0c;仅需要两两握手&#xff0c;也就是从42个握手开始&#xff0c;而非43.很可惜。这道题没有拿稳这5分。也很有可能是这5分导致没有进决赛。 总结&#xff1a…...

微调Llama3实现在线搜索引擎和RAG检索增强生成功能

视频中所出现的代码 Tavily SearchRAG 微调Llama3实现在线搜索引擎和RAG检索增强生成功能&#xff01;打造自己的perplexity和GPTs&#xff01;用PDF实现本地知识库_哔哩哔哩_bilibili 一.准备工作 1.安装环境 conda create --name unsloth_env python3.10 conda activate …...

【软件工程】【23.04】p1

关键字&#xff1a; 软件模型、提炼、加工表达工具、通信内聚、访问依赖、边界类交互分析、RUP核心工作流、首先测试数据流、软件验证过程、CMMI过程域分类工程类&#xff1b; 软件工程目的、功能需求是需求的主体、结构化方法、耦合、详细设计工具、类、类图、RUP采用用例技…...

Flutter 中的 ColoredBox 小部件:全面指南

Flutter 中的 ColoredBox 小部件&#xff1a;全面指南 在 Flutter 的世界中&#xff0c;ColoredBox 是一个用于填充颜色的简单而强大的小部件。它是一个不透明的矩形&#xff0c;可以用来创建颜色块&#xff0c;作为布局的占位符&#xff0c;或者简单地改变某个区域的背景色。…...

【LeetCode 随笔】面试经典 150 题【中等+困难】持续更新中。。。

文章目录 12.【中等】整数转罗马数字151.【中等】反转字符串中的单词6.【中等】Z 字形变换68.【困难】文本左右对齐167.【中等】两数之和 II - 输入有序数组 &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您…...

SwiftUI中AppStorage的介绍使用

在Swift中&#xff0c;AppStorage是SwiftUI中引入的一个属性包装器&#xff0c;在这之前我们要存储一些轻量级的数据采用UserDefaults进行存取。而AppStorage用于从UserDefaults中读取值&#xff0c;当值改变时&#xff0c;它会自动重新调用视图的body属性。也就是说&#xff0…...

iCloud 照片到 Android 指南:帮助您快速将照片从 iCloud 传输到安卓手机

​ 概括 iOS 和 Android 之间的传输是一个复杂的老问题。将 iCloud 照片传输到 Android 似乎是不可能的。放心。现在的高科技已经解决了这个问题。尽管 Apple 和 Android 不提供传输工具&#xff0c;但您仍然有其他有用的选项。这篇文章与您分享了 5 个技巧。因此&#xff0c;…...

知识点总结

1、Uboot的流程调用&#xff1a; 1.1、cmd_process函数是怎么被调用到的&#xff1a; cmd_process在common/command.c 1.2、uboot阶段断电&#xff0c;后续起不来&#xff0c;可能要换线去使用&#xff0c;也许和电源线有关 2、git 相关使用 2.1 .gitignore相关的使用 1、…...

Python并发与异步编程

Python的并发与异步编程是两个不同的概念&#xff0c;但它们经常一起使用&#xff0c;以提高程序的性能和响应能力。以下是对这两个概念的详细讲解&#xff1a; 并发编程 (Concurrency) 并发编程是指在程序中同时执行多个任务的能力。Python提供了几种实现并发的机制&#xff…...

动态内存管理—C语言通讯录

目录 一&#xff0c;动态内存函数的介绍 1.1 malloc和free 1.2 calloc 1.3 realloc 1.4C/C程序的内存开辟 二&#xff0c;通讯录管理系统 动态内存函数的介绍 malloc free calloc realloc 一&#xff0c;动态内存函数的介绍 1.1 malloc和free void* malloc (…...

美光EMMC芯片丝印型号查询 8LK17/D9PSK, OXA17/JY997

问题说明 最近在使用美光EMMC的时候&#xff0c;发现通过芯片丝印查询不到 芯片的规格说明书&#xff1b; 经过查阅资料&#xff0c;发现美光的EMMC芯片 “由于空间限制&#xff0c;FBGA 封装组件具有与部件号不同的缩写部件标记”&#xff0c;需要通过官网查询丝印的FBGA cod…...

win32-鼠标消息、键盘消息、计时器消息、菜单资源

承接前文&#xff1a; win32窗口编程windows 开发基础win32-注册窗口类、创建窗口win32-显示窗口、消息循环、消息队列 本文目录 键盘消息键盘消息的分类WM_CHAR 字符消息 鼠标消息鼠标消息附带信息 定时器消息 WM_TIMER创建销毁定时器 菜单资源资源相关菜单资源使用命令消息的…...

springboot项目部署到linux服务器

springboot后端 修改前 修改后 vue前端 修改前 将地址中的 localhost改为 ip 重新生成war包 war上传到linux的tomcat的webapps下 其他环境配置和macOS大差不差 Tomcat安装使用与部署Web项目的三种方法_tomcat部署web项目-CSDN博客...

MagicLens:新一代图像搜索技术和产品形态

MagicLens&#xff1a;Self-Supervised Image Retrieval with Open-Ended Instructions MagicLens: 自监督图像检索与开放式指令 作者&#xff1a;Kai Zhang&#xff0c; Yi Luan&#xff0c; Hexiang Hu&#xff0c; Kenton Lee&#xff0c; Siyuan Qiao&#xff0c; Wenhu …...

[9] CUDA性能测量与错误处理

CUDA性能测量与错误处理 讨论如何通过CUDA事件来测量它的性能如何通过CUDA代码进行调试 1.测量CUDA程序的性能 1.1 CUDA事件 CPU端的计时器可能无法给出正确的内核执行时间CUDA事件等于是在你的CUDA应用运行的特定时刻被记录的时间戳&#xff0c;通过使用CUDA事件API&#…...

Java学习四

Random 随机数 数组 静态初始化数组 数组在计算机中的基本原理 数组的访问 什么是遍历 数组的动态初始化 动态初始化数组元素默认值规则 Java内存分配介绍 数组在计算机中的执行原理 使用数组时常见的一个问题 案例求数组元素最大值 public class Test1 {public static void ma…...

Vue 父组件使用refs来直接访问和修改子组件的属性或调用子组件的方法

步骤 1: 在子组件中定义要被修改的属性或方法 首先&#xff0c;在子组件中定义你想要父组件能够修改或调用的属性或方法。例如&#xff0c;我们有一个名为MyChildComponent的子组件&#xff0c;它有一个名为childData的数据属性和一个名为updateData的方法。 // 子组件 MyChi…...

范罗士、希喂、安德迈爆款宠物空气净化器哪款好?深度对比测评

作为一名深受养猫过敏困扰的铲屎官&#xff0c;我经常提醒新手铲屎官重视家里的空气环境。宠物的浮毛和皮屑不仅会引发过敏&#xff0c;还可能传播细菌和病毒。很多人以为普通空气净化器能解决问题&#xff0c;但这些产品并未针对宠物家庭的特殊需求。经过多次研究和测试&#…...

SAP OBYC自动记账 详解

在MM模块的许多操作都能实现在FI模块自动过账,如PO收货、发票验证、工单发料、向生产车间发料等等。不用说,一定需要在IMG中进行配置才可以实现自动处理。但SAP实现的这种自动配置的机制是怎样的呢?其实也并不复杂,让我们先以一种最简单的情况来了解实现原理和实现流程,然…...

《NoSQL数据库技术与应用》 MongoDB副本集

《NoSQL数据库技术与应用》 教学设计 课程名称&#xff1a;NoSQL数据库技术与应用 授课年级&#xff1a; 20xx年级 授课学期&#xff1a; 20xx学年第一学期 教师姓名&#xff1a; 某某老师 2020年5月6日 课题 名称 第4章 MongoDB副本集 计划学时 8课时 内容 分析 独立模式可…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...

加密通信 + 行为分析:运营商行业安全防御体系重构

在数字经济蓬勃发展的时代&#xff0c;运营商作为信息通信网络的核心枢纽&#xff0c;承载着海量用户数据与关键业务传输&#xff0c;其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级&#xff0c;传统安全防护体系逐渐暴露出局限性&a…...