第十五届蓝桥杯省赛C/C++大学B组真题及赛后总结
目录
个人总结
C/C++ 组真题
握手问题
小球反弹
好数
R 格式
宝石组合
数字接龙
爬山
拔河
编辑
再总结及后续规划
个人总结
第一次参加蓝桥杯,大二,以前都在在学技术,没有系统的学过算法。所以,还是花了挺多时间去备战的,因为暑假想找实习,就想拿个奖写简历上。备战了大概一个多月,学了一些基础的算法(dfs bfs 动态规划为主),刷了快200道题吧,但还是因为缺少经验,比赛时有点茫然了,然后大概率是寄了。
C/C++ 组真题
握手问题
这道第一题相对于去年还算是比较简单,排列 + 特殊情况处理即可
(50 * 49) / 2 - (6*7) / 2 = 1204,答案应该是正确的
小球反弹
这个应该是错了哈哈,答案是 1100325199.77,但和这个值挺像的,可惜只看答案。
前两道题都是数学问题,唉,后悔没有静下心来看第二题了。
好数
这道题直接暴力模拟即可,数据量没有很大。
#include <iostream>
using namespace std;
int N;
int main()
{cin >> N;int Count = 0; // 记录总个数for (int i = 1; i <= N; i++){// 判断某一个数是否是 好数int n = i; // 用 n 记录 iint flag = 1; // 1 此时计算的是 i 的奇数位, 0 表示此时计算的是 i 的偶数位int ret = 1; // 记录当前数否为 好数while (n > 0){int end = n % 10;if (flag == 1){if (end % 2 == 0){ret = 0;break;}flag = 0;}else // flag = 0{if (end % 2 != 0){ret = 0;break;}flag = 1;}n /= 10;}if (ret == 1) Count++;}cout << Count << endl;return 0;
}
R 格式
这道题看起来挺简单的,但如果要拿满分的话,需要使用字符串模拟,我直接使用 long long 了,应该能拿 50% 的分。
long long 50%代码
#include <iostream>
using namespace std;
double d;
int n;
long long func(int n)
{long long ret = 1;while (n--){ret *= 2;}return ret;
}
int main()
{cin >> n >> d;cout << (long long)(func(n) * d + 0.5) << endl;return 0;
}
宝石组合
这道题没有学过网上的那些公式算法,第一个想到的是暴击解法,时间复杂度O(N^3),但思考了一会,发现是可以用哈希表来优化的,时间复杂度可以降到 O(N^2)。不过貌似依然过不了很多数据,第二个比较麻烦的点就是如果 S 相同的情况下要按字典序排顺序。
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
long long N;
long long nums[100010];
long long func(long long a, long long b, long long c = 1)
{long long Max = max(a, max(b, c));long long i = 0;for (i = Max; i >= 0; i += Max){if (i % a == 0 && i % b == 0 && i % c == 0) break;}return i;
}
long long get_S(long long a, long long b, long long c)
{long long tmp = a * b * c * func(a, b ,c);long long ret = tmp / (func(a, b) * func(a, c) * func(b, c));return ret;
}
int main()
{cin >> N;for (long long i = 1; i <= N; i++) cin >> nums[i];unordered_map<long long, pair<long long, long long>> hash;for (long long i = 2; i <= N; i++){for (long long j = i - 1; j >= 1; j--)hash[nums[i] * nums[j]] = { j, i };}long long ret[3] = {100010, 100010, 100010};long long S = 0;for (long long i = 1; i <= N; i++){for (auto& e : hash){if (e.second.first != i && e.second.second != i){long long tmp = get_S(nums[i], nums[e.second.first], nums[e.second.second]);if (tmp > S){S = tmp;ret[0] = nums[i];ret[1] = nums[e.second.first];ret[2] = nums[e.second.second];}else if (tmp == S){if (ret[0] > nums[i]){ret[0] = nums[i];ret[1] = nums[e.second.first];ret[2] = nums[e.second.second];}else if (nums[i] == ret[0] && ret[1] > nums[e.second.first]){ret[0] = nums[i];ret[1] = nums[e.second.first];ret[2] = nums[e.second.second];}else if (nums[i] == ret[0] && ret[1] == nums[e.second.first] && ret[2] > nums[e.second.second]){ret[0] = nums[i];ret[1] = nums[e.second.first];ret[2] = nums[e.second.second];}}}}}cout << ret[0] << " " << ret[1] << " " << ret[2] << endl;return 0;
}
数字接龙
这道题,打眼一看是 dfs ,觉得自己会,就开始做,没想到做到最后,不会判断路径是否交叉,有点懵逼了,就直接将得到的所有可以走完的路径按字典序排序后取了第一个,最后估计还没有直接输出 - 1的人得的分多。还是比赛经验不够,应该先好好看完题再开始写代码的。
这里就不放我的错代码了,唉,看到正确答案就在自己负责调试的 vector 里,却没有办法去除错错误的答案...
知乎正确答案:
#include <iostream>
#include <vector>
using namespace std;
const int N = 11;
int a[N][N];
int dt[8][2] = { {-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1} };
int n, k;
vector<int> path;
vector<int> res;
bool ban[N][N][N][N];
bool vis[N][N];
void dfs(int sx, int sy)
{if (!res.empty()) return;if (sx == n - 1 && sy == n - 1){if (path.size() == n * n - 1) res = path;return;}if (path.size() == n * n - 1) return;for (int i = 0; i < 8; i++){if (!res.empty()) return;int dx = dt[i][0], dy = dt[i][1];int x = sx + dx, y = sy + dy;if (x >= 0 && x < n && y >= 0 && y < n && !vis[x][y] && a[x][y] == (a[sx][sy] + 1) % k){if (dx != 0 && dy != 0 && ban[sx + dx][sy][sx][sy + dy]) continue;ban[sx][sy][x][y] = ban[x][y][sx][sy] = true;vis[x][y] = true;path.push_back(i);dfs(x, y);path.pop_back();vis[x][y] = false;ban[sx][sy][x][y] = ban[x][y][sx][sy] = false;}}
}
int main()
{scanf("%d%d", &n, &k);for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) scanf("%d", &a[i][j]);vis[0][0] = true;dfs(0, 0);if (!res.empty()){for (auto x : res) printf("%d", x);}else{puts("-1");}return 0;
}
爬山
由于上一题浪费了太多时间,这道题也没有认真看,想了一下动态规划,感觉有点复杂,凭感觉写了一下...出来后看了答案才发现是 优先级队列 + 贪心
这是知乎上的贪心答案,但这个做法对于有的测试用例也是过不了的,我感觉还是应该用动态规划哈哈。
int main()
{priority_queue<int> heap;scanf("%d%d%d",&n,&P,&Q);for(int i=1;i<=n;i++) scanf("%d",&a[i]),heap.push(a[i]);while(P||Q){auto x=heap.top();heap.pop();if(P&&Q){int yl=_sqrt(x);int y2=x/2;if(y2<=yl){Q--;heap.push(y2);}else{P--;heap.push(yl);}}else if(P){int yl=_sqrt(x);P--;heap.push(yl);}else{int y2=x/2;Q--;heap.push(y2);}}ll res=0;while(!heap.empty()){int x=heap.top();heap.pop();res+=x;}printf("%lld\n",res);return 0;
}
拔河
这道题看都没看,唉,应该先看一下的......,起码得个暴力分
标准答案:指针 + 二分
#include <iostream>
#include <vector>
#include <set>
using namespace std;
typedef long long ll;
const int N = 1003;
int a[N];
int n;
ll s[N];
int main()
{scanf("%d", &n);for (int i = 1; i <= n; i++) scanf("%d", &a[i]), s[i] = s[i - 1] + a[i];multiset<ll> S;for (int l = 1; l <= n; l++){for (int r = l + 1; r <= n; r++){S.insert(s[r] - s[l]);}}ll res = 0x3f3f3f3f;for (int r = 1; r < n; r++){for (int l = 0; l < r; l++){ll val = s[r] - s[l];auto it = S.lower_bound(val);if (it != S.end()){ll ans = abs(*it - val);res = min(res, ans);}if (it != S.begin()){it--;ll ans = abs(*it - val);res = min(res, ans);}}for (int r2 = r + 1; r2 <= n; r2++){S.erase(S.find(s[r2] - s[r]));}}printf("%lld\n", res);return 0;
}
再总结及后续规划
总结:自己算法还是太菜了(毕竟练习时长只有一个月),本次大概率可能是省二 ~ 省三了,省一的概率不大,不知道大三还有没有机会再打蓝桥杯,那时候应该要实习 / 考研吧。
接下来的安排,下周六还有一场天梯赛,打完后就要继续学技术了,冲一下暑假的日常实习,到时候就开始佛系做力扣每日一题了,不再花时间集中学算法了,算法竞赛的帮助,对于找开发的工作,有帮助,但最重要的还是技术得学到手,做项目。
相关文章:
第十五届蓝桥杯省赛C/C++大学B组真题及赛后总结
目录 个人总结 C/C 组真题 握手问题 小球反弹 好数 R 格式 宝石组合 数字接龙 爬山 拔河 编辑 再总结及后续规划 个人总结 第一次参加蓝桥杯,大二,以前都在在学技术,没有系统的学过算法。所以,还是花了挺多时间去备…...
【Qt踩坑】ARM 编译Qt5.14.2源码-QtWebEngine
1.下载源码 下载网站:Index of /new_archive/qt/5.14/5.14.2/single 2.QWebEngine相关依赖 sudo apt-get install flex libicu-dev libxslt-dev sudo apt-get install libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev sudo apt-get …...
SQL语法 case when语句用法讲解
CASE WHEN解释 : SQL中的CASE WHEN语句是一种条件表达式,它允许你根据不同的情况返回不同的值。CASE WHEN通常用于SELECT语句中,用于创建新的列,该列的值取决于其他列的值。CASE WHEN可以用于任何可以使用表达式的地方。 大致概…...
Project Euler_Problem 193_Few Repeated Digits_欧拉筛+容斥公式
解题思路:暴力搜索 代码: void solve() {ll i, j,k,x,y,z,p,q,u,v,l,l1;N 999966663333, NN 1024;//N 1000;double a, b, c,d;M.NT.get_prime_Euler(1000000);l M.NT.pcnt;for (i 1; i < l; i) {u M.NT.prime[i];v M.NT.prime[i 1];x u * …...
排序算法-基数排序
基数排序是一种非比较排序算法,它将待排序的数字按照位数进行排序。基数排序的思想是先按照个位数进行排序,然后按照十位数进行排序,接着按照百位数进行排序,以此类推,直到最高位排序完成。 基数排序的步骤如下&#x…...
ChatGPT在线网页版
ChatGPT镜像 今天在知乎看到一个问题:“平民不参与内测的话没有账号还有机会使用ChatGPT吗?” 从去年GPT大火到现在,关于GPT的消息铺天盖地,真要有心想要去用,途径很多,别的不说,国内GPT的镜像…...
5.SpringSpringBoot八股
Spring,Spring MVC,Spring Boot 之间什么关系? Spring就是整个Spring框架的整体,包含AOP、JDBC、Spring MVC等等模块 SpringBoot是Spring的精简版,它在Spring的基础上添加了自动装配、内置tomcat服务器等功能,使得代码量更少,同…...
0基础刷图论最短路 3(从ATcoder 0分到1800分)
AT最短路刷题3(本文难度rated 1200~ 1400) 题目来源:Atcoder 题目收集: https://atcoder-tags.herokuapp.com/tags/Graph/Shortest-Path (里面按tag分类好了Atcoder的所有题目,类似cf) &#x…...
k8s+docker一键安装过程
环境: k8s 1.20 docker 20.10 centos7.9 #docker安装 yum install -y epel-release yum install -y yum-utils yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce-20.10.6 docker-ce-cli-2…...
Python3+Appium+Android SDK+真机+实现app自动化测试-基于Red Hat7.9版本搭建环境及运行python脚本。
1、总体概述? 收费有收费的服务,那就是细致。Red Hat9.0自动化环境也有,需要的说一声。 1、实现在Red Ha/t Enterprise Linux7.9环境中搭建部署app自动化测试环境,提供详细步骤。 2、版本说明:jdk8/17+nodejs16/18/19/20/21+android sdk29+python3.9.18/3.11.1+appium1…...
深入理解MD5算法:原理、应用与安全
title: 深入理解MD5算法:原理、应用与安全 date: 2024/4/11 20:55:57 updated: 2024/4/11 20:55:57 tags: MD5算法数据安全哈希函数摘要算法安全漏洞SHA算法密码学 第一章:引言 导言 在当今数字化时代,数据安全和完整性变得至关重要。消息…...
架构师系列-搜索引擎ElasticSearch(三)- Java API
SpringBoot整合ES 搭建SpringBoot工程,引入ElasticSearch相关坐标 <!--引入es的坐标--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><versi…...
Ubuntu下配置Android NDK环境
Android-NDK的下载 下载Android-NDK wget -c http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin 执行bin文件(即解压) ./android-ndk-r10c-linux-x86_64.bin Android-NDK的配置 要想使用Android-NDK,还需要进行环境变量…...
使用 vue3-sfc-loader 加载远程Vue文件, 在运行时动态加载 .vue 文件。无需 Node.js 环境,无需 (webpack) 构建步骤
加载远程Vue文件 vue3-sfc-loader vue3-sfc-loader ,它是Vue3/Vue2 单文件组件加载器。 在运行时从 html/js 动态加载 .vue 文件。无需 Node.js 环境,无需 (webpack) 构建步骤。 主要特征 支持 Vue 3 和 Vue 2(参见dist/)仅需…...
stm32移植嵌入式数据库FlashDB
本次实验的程序链接stm32f103FlashDB嵌入式数据库程序资源-CSDN文库 一、介绍 FlashDB 是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能…...
Ubuntu 安装Java、Git、maven、Jenkins等持续集成环境
Ubuntu 持续集成 安装OpenJdk 查看所有可安装的 JDK 版本 apt list OpenJDK\*使用 apt 安装 JDK(以 11为例),最好是用11,java8对应的jenkins会有兼容问题。 sudo apt install openjdk-11-jdk openjdk-11-jre安装成功后,可以使用以…...
文件批量重命名并批量修改文件扩展名,支持随机大小写字母命名并修改扩展名字母
在数字时代,文件的管理和整理成为了我们日常工作与生活中不可或缺的一部分。然而,面对堆积如山的文件,如何高效地对其进行重命名和修改扩展名,成为了许多人的难题。 第一步,进入文件批量改名高手的主页面,…...
【管理咨询宝藏70】MBB大型城投集团内外部环境分析报告
本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏70】MBB大型城投集团内外部环境分析报告 【格式】PDF版本 【关键词】战略规划、商业分析、管理咨询、MBB顶级咨询公司 【强烈推荐】 这是一套市…...
服务器挖矿病毒解决ponscan,定时任务解决
服务器挖矿病毒解决ponscan,定时任务解决 挖矿病毒会隐藏chattr的操作权限,让我们无法删除病毒文件,杀掉病毒进程。所以要去下载chattr.c的文件,编译成a.out。然后再对原来的chattr文件的权限进行修改。然后覆盖掉它。 chattr.c …...
【鸿蒙开发】第二十一章 Media媒体服务(二)--- 音频播放和录制
1 AVPlayer音频播放 使用AVPlayer可以实现端到端播放原始媒体资源,本开发指导将以完整地播放一首音乐作为示例,向开发者讲解AVPlayer音频播放相关功能。 以下指导仅介绍如何实现媒体资源播放,如果要实现后台播放或熄屏播放,需要…...
网络安全从入门到精通(特别篇I):Windows安全事件应急响应之Windows应急响应基础必备技能
Windows应急 询问攻击情况范围 事件发生时的状况或安全设备告警等,能帮助应急处置人员快速分析确定事件类型,方便前期准备。 通用排查思路 入侵肯定会留下痕迹,另外重点强调的是不要一上来就各种查查查,问清楚谁在什么时间发现的主机异常情况,异常的现象是什么,受害用…...
基于SpringBoot+Mybatis框架的私人影院预约系统(附源码,包含数据库文件)
基于SpringBootMybatis框架的私人影院预约系统,附源码,包含数据库文件。 非常完整的一个项目,希望能对大家有帮助哈。 本系统的完整源码以及数据库文件都在文章结尾处,大家自行获取即可。 项目简介 该项目设计了基于SpringBoo…...
【SERVERLESS】AWS Lambda上实操
通过Serverless的发展历程及带给我们的挑战,引出我们改如何改变思路,化繁为简,趋利避害,更好的利用其优势,来释放企业效能,为创造带来无限可能。 一 Serverless概述 无服务器计算近年来与云原生计算都是在…...
IDEA2023 开发环境配置
目录 1. 关闭IDEA自动更新1.2 IDEA 新版样式切换 2. Maven配置2.1本地仓库优先加载2.2 maven.config配置文件中 3. 全局配置JDK4. 配置文件编码:UTF-85. 开启自动编译(全局配置)6. 开启自动导包7. 开启鼠标悬浮(提示文档信息)8. 设…...
YOLOV5 + 双目相机实现三维测距(新版本)
文章目录 YOLOV5 双目相机实现三维测距(新版本)1. 项目流程2. 测距原理3. 操作步骤和代码解析4. 实时检测5. 训练6. 源码下载 YOLOV5 双目相机实现三维测距(新版本) 本文主要是对此篇文章做一些改进,以及解释读者在…...
【计算机网络】(一)计算机网络概述
文章目录 【计算机网络】(一)计算机网络概述前言1.1 计算机网络在信息时代中的作用1.2 互联网概述1.2.1 网络的网络1.2.2 互联网基础结构发展的三个阶段1.2.3 互联网标准化工作 1.3 互联网的组成1.3.1 互联网的边缘部分1.3.2 互联网的核心部分 1.4 计算机…...
前端npm常用命令总结
npm(Node Package Manager)是Node.js的包管理器,用于安装和管理Node.js的依赖库。以下是一份npm命令的总结文档,涵盖了常用的npm命令及其功能: 包相关的 安装和卸载包 npm install :安装指定名称的包。n…...
[尚硅谷flink] 检查点笔记
在Flink中,有一套完整的容错机制来保证故障后的恢复,其中最重要的就是检查点。 文章目录 11.1 检查点11.1.1 检查点的保存1)周期性的触发保存2)保存的时间点3)保存的具体流程 11.1.2 从检查点恢复状态11.1.3 检查点算法…...
JVM虚拟机(五)强引用、软引用、弱引用、虚引用
目录 一、强引用二、软引用三、弱引用四、虚引用五、总结 引文: 在 Java 中一共存在 4 种引用:强、软、弱、虚。它们主要指的是,在进行垃圾回收的时候,对于不同的引用垃圾回收的情况是不一样的。下面我们就一起来看一下这 4 种引用…...
(最新)itext7 freemarker动态模板转pdf
1.引入依赖 <!--PDF导出POM--> <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>8.0.3</version><type>pom</type> </dependency> <dependency><grou…...
wordpress mysql 配置/温州seo按天扣费
1卷积神经网络的优点 卷积神经网络进行图像分类是深度学习关于图像处理的一个应用,卷积神经网络的优点是能够直接与图像像素进行卷积,从图像像素中提取图像特征,这种处理方式更加接近人类大脑视觉系统的处理方式。另外,卷积神经网…...
政府网站建设与管理规范/网站怎么收录到百度
java语言进行加密解密速度挺慢的。。一个6MB左右的文件需要10多秒。。。等有空了瞅瞅ffmpeg去。。MainActivity.java/*** 视频加密/解密** author oldfeel** Created on: 2014-2-17*/public class MainActivity extends Activity {// 原文件private static final String filePa…...
做分类信息网站赚钱吗/网络广告的形式有哪些?
安装 在 Mac 下可以直接使用 homebrew 安装 nginx brew search nginxbrew install nginx启动 nginx: sudo nginx,访问 8080 应能看到欢迎界面 nginx -V 查看 nginx 的启动参数,配置文件的位置默认是 --conf-path/usr/local/etc/nginx/nginx.conf #重新加…...
怎么做网站界面分析/廊坊seo快速排名
一,介绍 本文介绍使用Kruskal算法求解无向图的最小生成树。Kruskal是一个贪心算法,并且使用了并查集这种数据结构。关于并查集的介绍,参考:数据结构--并查集的原理及实现 二,构造一个无向图 图,肯定有顶点和…...
wordpress加入http请求/企业培训机构
同步(Sync) 所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。 根据这个定义,Java中所有方法都是同步调用,应为必须要等到结果后才会继续执行。我们在说…...
专做国际时事评论网站/网络营销具有哪些特点
比如像比较简单的关键词“交流”、“心得”并没有可供选择的选项,怎么办?而且输入后按确定也没有用。 解决方法 可以直接在输入后回车,然后确定。 更新20200330 本篇博客的关键词可见:...