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

2023年第十四届蓝桥杯大赛软件类省赛C/C++大学A组真题

2023年第十四届蓝桥杯大赛软件类省赛C/C++大学A组部分真题和题解分享

文章目录

  • 蓝桥杯2023年第十四届省赛真题-平方差
    • 思路题解
  • 蓝桥杯2023年第十四届省赛真题-更小的数
    • 思路题解
  • 蓝桥杯2023年第十四届省赛真题-颜色平衡树
    • 思路题解
  • 蓝桥杯2023年第十四届省赛真题-买瓜
    • 思路题解

蓝桥杯2023年第十四届省赛真题-平方差

题目描述
给定 L, R,问 L ≤ x ≤ R 中有多少个数 x 满足存在整数 y,z 使得 x = y2 − z2。
输入格式
输入一行包含两个整数 L, R,用一个空格分隔。
输出格式
输出一行包含一个整数满足题目给定条件的 x 的数量。
样例输入
1 5
样例输出
4
提示
1 = 12 − 02 ;
3 = 22 − 12 ;
4 = 22 − 02 ;
5 = 32 − 22 。
对于 40% 的评测用例,LR ≤ 5000 ;
对于所有评测用例,1 ≤ L ≤ R ≤ 109 。

思路题解

解题思路:

  • 规律:只有当x为奇数或4的倍数时才能拆分为两个数的平方差。
    注意事项:
  • 刚开始用c++写循环的时候,有一个样例会超时,故进一步寻找规律:F(X)=x/4+(x+1)/2,该式代表不大于x的满足条件的数的个数,用F®-F(L-1)即为L-R之间(大于等于L,小于等于R)满足条件的数的个数。
#include<iostream>
using namespace std;
int F(int x) {return x / 4 + (x + 1) / 2;//不大于x的满足条件的数的个数
}
int main() {int l = 0, r = 0;cin >> l >> r;cout << F(r)-F(l-1);return 0;
}

蓝桥杯2023年第十四届省赛真题-更小的数

题目描述
在这里插入图片描述
输入格式
输入一行包含一个长度为 n 的字符串表示 num(仅包含数字字符 0 ∼ 9),
从左至右下标依次为 0 ∼ n − 1。
输出格式
输出一行包含一个整数表示答案。
样例输入
210102
样例输出
8
提示
一共有 8 种不同的方案:
1)所选择的子串下标为 0 ∼ 1 ,反转后的 numnew = 120102 < 210102 ;
2)所选择的子串下标为 0 ∼ 2 ,反转后的 numnew = 012102 < 210102 ;
3)所选择的子串下标为 0 ∼ 3 ,反转后的 numnew = 101202 < 210102 ;
4)所选择的子串下标为 0 ∼ 4 ,反转后的 numnew = 010122 < 210102 ;
5)所选择的子串下标为 0 ∼ 5 ,反转后的 numnew = 201012 < 210102 ;
6)所选择的子串下标为 1 ∼ 2 ,反转后的 numnew = 201102 < 210102 ;
7)所选择的子串下标为 1 ∼ 4 ,反转后的 numnew = 201012 < 210102 ;
8)所选择的子串下标为 3 ∼ 4 ,反转后的 numnew = 210012 < 210102 ;

对于 20% 的评测用例,1 ≤ n ≤ 100 ;
对于 40% 的评测用例,1 ≤ n ≤ 1000 ;
对于所有评测用例,1 ≤ n ≤ 5000 。在这里插入图片描述

思路题解

解题思路:

中心思想:s[l] > s[r]则满足条件,答案的个数+1。

详细解释:考虑s的所有子串[l,r], l即left,是子串的起始下标,r即right是子串的末尾下标,判断s[l] 和 s[r]的大小关系:

  • 若s[l] > s[r]则该子串反转后,新串<原串,满足条件,答案数+1;

  • 若s[l] = s[r]则将子串区间[l,r]缩小为[l+1,r-1],再判断s[l+1]和s[r-1]的大小关系;

  • 若s[l] < s[r]则该子串反转后,新串>原串,不满足条件。

注意事项:

  • 注意l和r的取值范围(详见代码注释)。
#include<iostream>
#include<string>
using namespace std;
string s;
int F(int l, int r) {while (l < r) {if (s[l] > s[r])return 1;//如果s[l] > s[r],反转后满足条件 新字符串<原字符串。else if (s[l] == s[r]) { l++;r--; }//如果s[l] == s[r],两边同时缩小区间。else break;//如果s[l] < s[r],不用继续考虑,反转后一定不满足条件,直接退出循环}return 0;
}
int main(){cin >> s;int n = s.length();//n是字符串长度int ans = 0;//记录答案for (int l = 0;l <= n - 2;l++) {//l即left是子串的起始下标,从0开始到n-2(子串长度至少为2,最右侧的最小子串下标为[n-2,n-1],故l最多到n-2)for (int r = n - 1;r > l;r--) {//r即right是子串的末尾下标,从s的最末下标n-1到l+1。if(F(l,r))ans++;}}cout << ans;return 0;
}

蓝桥杯2023年第十四届省赛真题-颜色平衡树

题目描述
给定一棵树,结点由 1 至 n 编号,其中结点 1 是树根。树的每个点有一个颜色 Ci。
如果一棵树中存在的每种颜色的结点个数都相同,则我们称它是一棵颜色平衡树。
求出这棵树中有多少个子树是颜色平衡树。
输入格式
输入的第一行包含一个整数 n ,表示树的结点数。
接下来 n 行,每行包含两个整数 Ci , Fi,用一个空格分隔,表示第 i 个结点的颜色和父亲结点编号。
特别地,输入数据保证 F1 为 0 ,也即 1 号点没有父亲结点。保证输入数据是一棵树。
输出格式
输出一行包含一个整数表示答案。
样例输入
6
2 0
2 1
1 2
3 3
3 4
1 4
样例输出
4
提示
编号为 1, 3, 5, 6 的 4 个结点对应的子树为颜色平衡树。
对于 30% 的评测用例,n ≤ 200,Ci ≤ 200 ;
对于 60% 的评测用例,n ≤ 5000,Ci ≤ 5000 ;
对于所有评测用例,1 ≤ n ≤ 200000,1 ≤ Ci ≤ 200000,0 ≤ Fi < i 。

思路题解

思路:

  • 要判断每个子树是否为平衡树,需要统计子树的每种颜色的节点的数量,并判断所有数量是否相等。

  • 对于一颗树的根节点,若该树的所有子树的统计结果都得到了,就可以直接将子树的统计结果累加,并加上根节点的颜色。因此可以使用dfs对树进行搜索,在后序遍历位置得到子树的统计结果并累加,就可以计算出该树的统计结果,判断所有颜色数量是否相等即可。

注意:

  • 统计结果cnt使用数组时,需要判断整颗树所有颜色的数量,而部分子树的颜色并不包含所有的颜色,每次判断的时间复杂度为O(num_c),num_c为整棵树的颜色种数,这样会超时。因此可以使用map数据结构,这样每次只需判断子树所包含的颜色。
#include<iostream>
#include<vector>
#include<cstring>
#include<map>
using namespace std;
const int N = 2e5+1;
//最终结果
int ans=0;
//将子树的计数结果cnt_nb累加到根节点的结果cnt上
void add(map<int,int>& cnt,map<int,int>& cnt_nb){for(auto entry:cnt_nb){int c=entry.first,count = entry.second;cnt[c] += count;}
}
/*
对树进行dfs搜索,树的根节点为i,并返回该子树的各节点颜色计数结果
*/
map<int,int> dfs(vector<int>* g,int* c,int i){int sz = g[i].size();map<int,int> cnt; //记录子树的每个节点的各颜色节点的数量/*如果为叶子节点,直接返回*/if(sz==0){ cnt[c[i]] = 1; ans++; return cnt;}/*如果不是叶子节点*///将根节点的颜色加入cntcnt[c[i]]=1;//遍历根节点的所有子树,并将子树的计数结果累加到cnt中for(int j=0;j<sz;j++){int nb = g[i][j];map<int,int> cnt_nb = dfs(g,c,nb);add(cnt,cnt_nb);} //判断该子树的各种颜色节点的数量是否相等int count = cnt[c[i]];for(auto entry:cnt){//存在一种颜色数量不等,直接返回if(entry.second != count) return cnt; }//各颜色的数量相等,结果+1ans++;//返回计数结果return cnt;
}
int main()
{int n;cin>>n;vector<int> g[N]; int c[N]; //每个节点的颜色for(int i=0;i<n;i++){int f;cin>>c[i]>>f;if(f>=1){g[f-1].push_back(i); //记录节点f的子节点i(节点编号从0开始)}}dfs(g,c,0);cout<<ans;return 0;
}

蓝桥杯2023年第十四届省赛真题-买瓜

题目描述
小蓝正在一个瓜摊上买瓜。瓜摊上共有 n 个瓜,每个瓜的重量为 Ai 。
小蓝刀功了得,他可以把任何瓜劈成完全等重的两份,不过每个瓜只能劈一刀。
小蓝希望买到的瓜的重量的和恰好为 m 。
请问小蓝至少要劈多少个瓜才能买到重量恰好为 m 的瓜。如果无论怎样小蓝都无法得到总重恰好为 m 的瓜,请输出 −1 。
输入格式
输入的第一行包含两个整数 n, m,用一个空格分隔,分别表示瓜的个数和小蓝想买到的瓜的总重量。
第二行包含 n 个整数 Ai,相邻整数之间使用一个空格分隔,分别表示每个瓜的重量。
输出格式
输出一行包含一个整数表示答案。
样例输入
3 10
1 3 13
样例输出
2
提示
对于 20% 的评测用例,∑n≤10;
对于 60% 的评测用例,∑n≤20;
对于所有评测用例,1 ≤n≤30,1≤ Ai ≤ 109 ,1 ≤ m ≤ 109

思路题解

对于每一个瓜有三种选择:
1)买整个瓜
2)买半个瓜,需要增加劈瓜次数
3)不买

则可以使用深度优先搜索解决, 对每个瓜的三种选择进行搜索, 解空间树是一颗完全三叉树, 时间复杂度为O(3^n), 肯定会超时, 故需要进行剪枝。

买半个瓜时需要将重量除2,会产生小数,故可以将重量数组都乘2,最大重量也乘2。

搜索时需要记录三个状态,当前层数pos,当前总重量sum,当前劈瓜的次数cnt,以下情况需要剪枝:
1)当前劈瓜次数大于已求得的最小次数,即cnt>ans
2)当前重量之和大于要求的重量,即sum>m

但是这样仍然会超时,还可以将重量数组降序排列,使得更快剪枝。还可以创建一个重量数组的后缀数组suf,这样在搜索时可以利用其剪枝:若当前重量加上剩余的所有瓜重量之和小于要求的重量,剪枝。

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 30; 
int INF = 100;
int n,m;
int v[N]; //重量数组
long suf[N+1]; //重量数组的后缀数组
int ans = INF; //将结果初始化为INF
/*
dfs搜索,参数分别表示当前层数,当前重量之和,切瓜的次数
*/
void dfs(int pos,long sum,int cnt){if(sum==m){ //找到了一个结果ans = min(ans,cnt);return;}//剪枝if(pos>=n || cnt>=ans || sum>m || sum+suf[pos]<m) return;//对三种选择进行搜索dfs(pos+1,sum+v[pos],cnt); dfs(pos+1,sum+v[pos]/2,cnt+1);dfs(pos+1,sum,cnt);
}
int main()
{ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>n>>m;m*=2; //总重量乘2for(int i=0;i<n;i++) cin>>v[i],v[i]*=2;sort(v,v+n,greater<int>());for(int i=n-1;i>=0;i--) suf[i] = suf[i+1]+v[i];dfs(0,0,0);if(ans==INF) cout<<-1;else cout<<ans;return 0;
}

相关文章:

2023年第十四届蓝桥杯大赛软件类省赛C/C++大学A组真题

2023年第十四届蓝桥杯大赛软件类省赛C/C大学A组部分真题和题解分享 文章目录 蓝桥杯2023年第十四届省赛真题-平方差思路题解 蓝桥杯2023年第十四届省赛真题-更小的数思路题解 蓝桥杯2023年第十四届省赛真题-颜色平衡树思路题解 蓝桥杯2023年第十四届省赛真题-买瓜思路题解 蓝桥…...

项目部署发布

目录 上传数据库 修改代码中的数据源配置 修改配置文件中的日志级别和日志目录 打包程序 ​编辑​编辑 上传程序 查看进程是否在运行 以及端口 云服务器开放端口(项目所需要的端口) 上传数据库 通过xshell控制服务器 创建目录 mkdir bit_forum 然后进入该目录 查看路…...

MATLAB环境下基于离散小波变换的心电信号伪影去除及PQRST波检测

可穿戴个人健康监护系统被广泛认为是下一代健康监护技术的核心解决方案。监护设备不断地感知、获取、分析和存储大量人体在日常活动中的生理数据&#xff0c;为人体的健康状况提供必要的、准确的、集成的和长期的评估和反馈。在心电监测领域&#xff0c;可穿戴传感器具有以下应…...

SwiftUI 在 App 中弹出全局消息横幅(下)

功能需求 在 SwiftUI 开发的 App 界面中,有时我们需要在全局层面向用户展示一些消息: 如上图所示:我们弹出的全局消息横幅位于所有视图之上,这意味这它不会被任何东西所遮挡;而且用户可以点击该横幅关闭它。这是怎么做到的呢? 在本篇博文中,您将学到以下内容 功能需求…...

2023年06月CCF-GESP编程能力等级认证Scratch图形化编程三级真题解析

本文收录于专栏《Scratch等级认证CCF-GESP真题解析》,专栏总目录・点这里 一、单选题(共15题,共30分) 第1题 高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执行代码。 A:编辑 B:保存 C:调试 D:编译 答案:D 第2题 小球角色,执行以下程序…...

升级openssl

openssl版本一键升级&#xff08;需要修改tar包名称和路径&#xff09; --- - name: Install OpenSSLhosts: openssltasks:- name: Copy OpenSSL tar.gz to /tmpcopy:src: /root/shl/soft/openssl-1.1.1v.tar.gzdest: /tmp # remote_src: yes # 如果源文件在控制主机上…...

软考基础知识2

1.DMA控制方式&#xff1a;直接内存存取。数据在内存与I/O设备间直接成块传送&#xff0c;不需要CPU的任何干涉&#xff0c;由DMA硬件直接执行完成。 例题&#xff1a; 2.程序计数器总是存下一个指令的地址。 例题&#xff1a; 3.可靠度的计算&#xff1a; 例题&#xff1a…...

Python基本数据类型介绍

Python 解释 Python是一种高级编程语言&#xff0c;以其简洁、易读和易用而闻名。它是一种通用的、解释型的编程语言&#xff0c;适用于广泛的应用领域&#xff0c;包括软件开发、数据分析、人工智能等。python是一种解释型&#xff0c;面向对象、动态数据类型的高级程序设计…...

边缘计算网关:连接物理世界与数字世界的桥梁-天拓四方

边缘计算网关是一种硬件设备&#xff0c;通常部署在网络边缘&#xff0c;即物联网设备的接入点。它具备数据采集、处理、存储和传输等功能&#xff0c;能够实现对物联网设备的实时监控和控制。边缘计算网关将原本需要在云端处理的数据在本地进行计算和分析&#xff0c;从而降低…...

NTP网络校时服务器(GPS北斗卫星校时系统)应用场景

NTP网络校时服务器&#xff08;GPS北斗卫星校时系统&#xff09;应用场景 NTP网络校时服务器&#xff08;GPS北斗卫星校时系统&#xff09;应用场景 随着大数据、云计算时代的到来,各行业信息化建设的不断提升,信息化下的各个系统不再单独处理各自业务,而是趋于协同工作,因此,各…...

Intel 芯片 Mac 如何重新安装系统

使用可引导安装器重新安装&#xff08;可用于安装非最新的 Mac OS&#xff0c;系统降级&#xff0c;需要清除所有数据&#xff0c;过程确保连接上网络&#xff0c;虽然这种方式不会下载 Mac OS&#xff0c;但是需要下载固件等信息&#xff09; 插入制作好的可引导安装器&#x…...

【uni-app】condition 启动模式配置,生产环境无效,仅开发期间生效

在小程序开发过程中&#xff0c;每次代码修改后&#xff0c;都会启动到首页&#xff0c;有时非常不方便&#xff0c;为了更高效的开发&#xff0c;有时需要模拟直接跳转到指定的页面&#xff0c; 操作方法如下&#xff1a; 在pages.joson里面配置下列代码&#xff1a; "…...

sql单表运用11.3

一、进入数据库操作界面 1、mysql -u root -p 敲回车 &#xff0c;输入密码 &#xff0c;进入数据库操作界面 2、show databases 查看所有的数据&#xff08;如果没有数据库&#xff1a;创建数据库 create database 库名称&#xff09; 3、use 数据库名 使…...

YOLOv5目标检测学习(1):yolo系列算法的基础概念

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、基于深度学习的目标检测需要哪些步骤&#xff1f;二、数据准备&#xff08;即准备数据集&#xff09;1.目标检测的数据集如何获取&#xff1f;2.数据集包括…...

【大数据】通过 docker-compose 快速部署 MinIO 保姆级教程

文章目录 一、概述二、MinIO 与 Ceph 对比1&#xff09;架构设计对比2&#xff09;数据一致性对比3&#xff09;部署和管理对比4&#xff09;生态系统和兼容性对比 三、前期准备1&#xff09;部署 docker2&#xff09;部署 docker-compose 四、创建网络五、MinIO 编排部署1&…...

VMware 虚拟机安装windows 10操作系统

先提前准备好镜像文件 1.创建新的虚拟机 2.选择自定义&#xff0c;然后下一步 v Windows 建议选择2G以上&#xff0c;下一步 选择网络地址转换&#xff08;NAT&#xff09;&#xff0c;下一步 这里可按自己的需求来分区&#xff0c;也可以安装好后再分区 选择立即重启&#xff…...

Mysql实战(2)之MySQL执行流程

-- 查看mysql当前有多少连接 show global status like Thread%; /* Threads_cached&#xff1a;缓存中的线程连接数 Threads_connected&#xff1a;当前打开的连接数 Threads_created&#xff1a;为处理连接创建的线程数 Threads_running&#xff1a;非睡眠状态的连接数&…...

ES6 | (二)ES6 新特性(下) | 尚硅谷Web前端ES6教程

文章目录 &#x1f4da;迭代器&#x1f407;定义&#x1f407;工作原理&#x1f407;自定义遍历数据 &#x1f4da;生成器函数&#x1f407;声明和调用&#x1f407;生成器函数的参数传递&#x1f407;生成器函数案例 &#x1f4da;Promise&#x1f4da;Set&#x1f407;Set的定…...

客户案例|用友NC财务系统上云

本文分享一次成功将用友NC财务系统上云的经验&#xff0c;主要涉及阿里云上Oracle ASM存储扩容&#xff0c;阿里云ESC RAC服务器扩容&#xff0c;阿里云上Oracle RAC数据库迁移等相关技术&#xff0c;一起来看看吧&#xff01; 1 客户数据库上云背景 本次项目我司主要负责客户…...

OceanPen Art AI绘画系统内容讲解

在一个崇高的目标支持下&#xff0c;不停地工作&#xff0c;即使慢&#xff0c;也一定会获得成功。 —— 爱因斯坦 演示站点&#xff1a; ai.oceanpen.art官方论坛&#xff1a; www.jingyuai.com &#x1f4a1;技术栈 前端&#xff1a;VUE3后端&#xff1a;Java数据&#xf…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程

鸿蒙电脑版操作系统来了&#xff0c;很多小伙伴想体验鸿蒙电脑版操作系统&#xff0c;可惜&#xff0c;鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机&#xff0c;来体验大家心心念念的鸿蒙系统啦&#xff01;注意&#xff1a;虚拟…...