【蓝桥杯】第十三届C++B组省赛
目录
- 试题A:九进制转十进制
- 试题B:顺子日期
- 试题C:刷题统计
- 试题D:修剪灌木
- 试题E:X 进制减法
- 试题F:统计子矩阵
- 试题G:积木画
- 试题H:扫雷
- 试题I:李白打酒加强版
- 试题J:砍竹子
试题A:九进制转十进制

这题我们直接手算最快,当然写代码也用不了多少时间。
#include <bits/stdc++.h>
using namespace std;int main()
{int n = 2022;int ret = 0, m = 1;while (n){ret += (n % 10) * m;m *= 9;n /= 10;}cout << ret << endl;return 0;
}
任意进制转10进制:
#include <bits/stdc++.h>
using namespace std;int func(int x, int y)
{int ret = 0, i = 0;while (x){ret += (x % 10) * pow(y, i); x /= 10;i++;}return ret;
}int main()
{int n, m;cin >> n >> m;cout << func(n, m) << endl;return 0;
}
如2022的9进制:

试题B:顺子日期

根据我们对日期的了解,要有顺子出现则只可能有 012、123 这两种,而且年份2022也不用考虑,所以我们可以遍历2022年每一天的日期然后删选统计。
#include <bits/stdc++.h>
using namespace std;bool check(int mouth, int day)
{string s;if (mouth < 10) s += '0';s += to_string(mouth);if (day < 10) s += '0';s += to_string(day);return (s.find("012") != string::npos) || (s.find("123") != string::npos);
}int main()
{int count = 0;int day[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};for (int i = 1; i <= 12; i++)for (int j = 1; j <= day[i]; j++)if (check(i, j)) count++;cout << count << endl;return 0;
}
试题C:刷题统计

- 注意题中给定的数据范围,很明显要开
long long; - 一天一天枚举只能通过部分样例,需要做一个小优化,很容易的能想到先计算出需要的整的周数,然后再枚举剩下的天数。
#include <bits/stdc++.h>
using namespace std;using ll = long long;int main()
{ll a, b, n, num, week, day;cin >> a >> b >> n;num = 5 * a + 2 * b; // 一周做num道题 week = n / num; // 整的周数day = n - (week * num); // 还需要做多少题int count = 0;for (int i = 1; i <= 7 && day > 0; i++){count++;if (i <= 5) day -= a;else day -= b;} cout << week * 7 + count << endl;return 0;
}
试题D:修剪灌木


- 这道题需要多思考,多画图,就能找到其中的关键所在;
- 爱丽丝向左或向右经过第 i 棵树,到左端点或右端点后折返回来的这几天, 是第 i 棵树能长到最大高度的时机;
- 可以看作是爱丽丝没走一步第 i 棵树就长高 1cm,那就转而变为求爱丽丝下次经过第 i 棵树最大需要走多少步。
#include <bits/stdc++.h>
using namespace std;int main()
{int n;cin >> n;for (int i = 1; i <= n; i++)cout << 2 * max(n - i, i - 1) << endl;return 0;
}
试题E:X 进制减法



试题F:统计子矩阵



我们枚举所有子矩阵的上角和右下角,就能统计出所有子矩阵的和。但是四层循环会超出时间限制,只能拿到70%的分数。
#include <bits/stdc++.h>
using namespace std;using ll = long long;
int arr[510][510];
int dp[510][510];int main()
{int n, m, ret = 0;ll k;cin >> n >> m >> k;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){cin >> arr[i][j];dp[i][j] = dp[i][j - 1] + dp[i - 1][j] - dp[i - 1][j - 1] + arr[i][j];}}for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){for (int x = i; x <= n; x++){for (int y = j; y <= m; y++){if ((dp[x][y] - dp[x][j - 1] - dp[i - 1][y] + dp[i - 1][j - 1]) <= k) ret++;}}} }cout << ret << endl;return 0;
}
可以用滑动窗口做优化,先固定一个上边界 i,再固定一个下边界 j,然后让 r 指针右移,当四条边界围成的矩阵和大于 k 时让 l 指针右移,当刚好子矩阵之和不超过 k 时,此时 l 和 r 之间的所有子矩阵之和都不超过 k。

注意遍历过程中的数据范围,不要造成重复遍历。
#include <bits/stdc++.h>
using namespace std;using ll = long long;
ll dp[510][510];
ll n, m, k;int main()
{ll ret = 0;cin >> n >> m >> k;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){int tmp;cin >> tmp;dp[i][j] = dp[i][j - 1] + dp[i - 1][j] - dp[i - 1][j - 1] + tmp;}}for (int i = 1; i <= n; i++){for (int j = i; j <= n; j++){for (int l = 1, r = 1; r <= m; r++){while (l <= r && dp[j][r] - dp[j][l - 1] - dp[i - 1][r] + dp[i - 1][l - 1] > k) l++;if (l <= r) ret += r - l + 1;}}}cout << ret << endl;return 0;
}
试题G:积木画



我们以第 i 个位置向前推理:

可以发现,对于第 i 个位置只有一种拼法;对于第 i-1 个位置也只有一种拼法(不能竖着拼,这样就和前面重复了);对于第 i-2 个位置就有两种拼法;同样的对于第 i-3、i-4 等等都是两种拼法。
那我们就可以写出状态转移方程:dp[i] = dp[i-1] + dp[i-2] + 2 * dp[i-3] + 2 * dp[i-4] + ... + 2 * dp[1]。
然后我们可以用高中常用的方法变化上面的式子得到 dp[i-1] = dp[i-2] + dp[i-3] + 2 * dp[i-4] + ... + 2 * dp[1],两式相减得:dp[i] = 2 * dp[i-1] + dp[i-3]。
#include <bits/stdc++.h>
using namespace std;const int N = 1e7 + 1;
using ll = long long;
ll dp[N], mod = 1e9 + 7;int main()
{int n;cin >> n;dp[1] = 1;dp[2] = 2;dp[3] = 5;for (int i = 4; i <= n; i++)dp[i] = ((2 * dp[i - 1]) % mod + dp[i - 3]) % mod;cout << dp[n] << endl;return 0;
}
试题H:扫雷



试题I:李白打酒加强版



- 一般求合法的个数、顺序、排列、方案等且范围不是很大,大概率是用动态规划做。
本题的关键所在是:最后一次遇到花,且酒恰好喝完。
动态规划的两大要素:状态和转移。
状态:题中共有三个状态:店、花、酒。所以设 dp[i][j][k] 表示经过i家店,j朵花,壶里还有k斗酒的方案数。
转移:假设李白的壶中此时有k斗酒,则此时的状态 dp[i][j][k] 可以由 dp[i-1][j][k/2] (上一次遇到的是店,但是需要注意此时的k必须是偶数,因为此时的k是由上一次遇到店翻倍而来)和 dp[i][j-1][k+1] (上一次遇到的是花)转移而来。
最后返回 dp[n][m-1][1],因为要保证最后一次遇到的是花,且酒恰好还剩一斗。
#include <bits/stdc++.h>
using namespace std;const int mod = 1e9 + 7;
// dp[i][j][k]表示经过i家店,j朵花,壶里还有k斗酒的方案总数
int dp[110][110][110];int main()
{int n, m;cin >> n >> m;dp[0][0][2] = 1;for (int i = 0; i <= n; i++){for (int j = 0; j <= m; j++){for (int k = 0; k < m; k++){if (k % 2 == 0 && i > 0){dp[i][j][k] += (dp[i - 1][j][k / 2]) % mod; }if (j > 0){dp[i][j][k] += (dp[i][j - 1][k + 1]) % mod;}}}}cout << dp[n][m - 1][1] << endl;return 0;}
试题J:砍竹子



本题的关键是:如果当前的竹子高度在变化的过程中,某次高度在前面的竹子高度变化过程中出现过,那么这棵竹子就不用再砍了,因为可以和前面的竹子一起砍。对于后面的竹子也是一样,只要高度降低到在前面竹子高度变化中有出现,就点到为止,然后把当前竹子的所有变化记录下来,开始砍下一棵竹子。
#include <bits/stdc++.h>
using namespace std;const int N = 2e5 + 1;
using ll = long long;
ll n, ret, sz;
ll arr[N], f[100];int main()
{cin >> n;for (int i = 0; i < n; i++) cin >> arr[i];while (arr[0] > 1){ret++;f[sz++] = arr[0];arr[0] = floor(sqrt(floor(arr[0] / 2.0) + 1));}for (int i = 1; i < n; i++){ll t = arr[i];while (t > 1){int flag = 0;for (int i = 0; i < sz; i++){if (f[i] == t) {flag = 1;break;}}if (flag == 1) break;ret++;t = floor(sqrt(floor(t / 2.0) + 1));}sz = 0;while (arr[i] > 1){f[sz++] = arr[i];arr[i] = floor(sqrt(floor(arr[i] / 2.0) + 1));}}cout << ret << endl;return 0;
}
本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~
相关文章:
【蓝桥杯】第十三届C++B组省赛
⭐️个人主页:小羊 ⭐️所属专栏:蓝桥杯 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 试题A:九进制转十进制试题B:顺子日期试题C:刷题统计试题D:修剪灌木试题E…...
C# PaddleOCR字符识别
1 安装Nuget 2 C# using System; using OpenCvSharp; using Sdcb.PaddleOCR; using Sdcb.PaddleOCR.Models.Local; using Sdcb.PaddleOCR.Models; using Sdcb.PaddleInference;namespace ConsoleApp1 {public class MichaelOCR{string imagePath "D:\\BUFFER\\VS\\Text\…...
网络爬虫相关
一、爬虫的基础内容 1、基本概念和用途 1.1、概念: 模拟浏览器、发送请求,获取响应。(只能获取客户端所展示出来的数据) 1.2、特点:知识碎片化,针对不同的网站对应的方法也不同。 爬虫:模拟…...
算法及数据结构系列 - 二分查找
系列文章目录 算法及数据结构系列 - BFS算法 文章目录 二分查找框架思路经典题型二分查找寻找左侧边界寻找右侧边界 刷题875. 爱吃香蕉的珂珂1011. 在 D 天内送达包裹的能力392. 判断子序列 二分查找 框架思路 int binarySearch(int[] nums, int target) {int left 0, righ…...
多环境开发-Profiles
在实际的项目开发中,我们通常会涉及多个环境,如开发环境(dev)、测试环境(test)和生产环境(pro)。在不同的环境下,程序的配置信息会有所不同,例如连接的数据库…...
《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现
《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现 《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现线程的概念引入线程的背景线程与进程的区别 线程创建与运行pthread_createpthread_join可在临界区内调用的函数工作&#…...
MambaVision:一种Mamba-Transformer混合视觉骨干网络
摘要 我们提出了一种新型混合Mamba-Transformer主干网络,称为MambaVision,该网络专为视觉应用而设计。我们的核心贡献包括重新设计Mamba公式,以增强其对视觉特征的高效建模能力。此外,我们还对将视觉Transformer(ViT&…...
【Visio使用教程】
Visio使用教程 1. Visio 的基本介绍1.1 Visio 是什么?核心特点: 1.2 主要功能与应用场景典型用途:行业应用: 1.3 版本与兼容性1.4 Visio下载1.5 安装 2. Visio 的界面与基础操作2.1 界面布局详解2.2 创建新文档与模板选择2.3 形状…...
深度学习-服务器训练SparseDrive过程记录
1、cuda安装 1.1 卸载安装失败的cuda 参考:https://blog.csdn.net/weixin_40826634/article/details/127493809 注意:因为/usr/local/cuda-xx.x/bin/下没有卸载脚本,很可能是apt安装的,所以通过执行下面的命令删除: a…...
什么是梯度方差和缩放因子
什么是梯度方差和缩放因子 目录 什么是梯度方差和缩放因子计算梯度方差(Fisher 信息)作用梯度方差计算方式(方差越大,参数越重要,小步更新(细致一些))示例使用缩放因子作用示例两者的区别总结在 LoRA(Low-Rank Adaptation)中,计算梯度方差和使用缩放因子是两个不同的概…...
Linux 如何上传本地文件以及下载文件到本地命令总结
如果你希望在 Shell 终端中将远程服务器上的文件下载到本地电脑,可以使用以下工具和命令: 1. rz / sz(用于 Xshell、MobaXterm 等终端) 如果你使用的是Xshell、SecureCRT、MobaXterm等支持 rz/sz 的终端,可以使用 rz …...
学习单片机需要多长时间才能进行简单的项目开发?
之前有老铁问我,学单片机到底要多久,才能进行简单的项目开发?是三个月速成,还是三年磨一剑? 今天咱们就来聊聊这个话题,我不是什么高高在上的专家,就是个踩过无数坑、烧过几块板子的“技术老友”…...
stm32 L432KC(mbed)入门第一课
目录 一. 前言 二. 专栏意义 三. MS入门第一课 一. 前言 新的一年MS课程又开始了,同时也到了该专栏的第三个年头。在前两年中,该专栏帮助了很多第一次接触单片机的同学。其中,有的同学订阅专栏是为了更好的完成并且通过MS这门课程…...
【面试手撕】非常规算法,多线程常见手撕题目
【面试手撕】非常规算法,多线程常见手撕题目 生产者消费者ReentrantLock实现的生产苹果/消费苹果synchronized实现的生产消费LinkedBlockingQueue阻塞队列方法实现多条件资源分配分布式任务调度模拟 交替打印两个线程交替打印1-100之间的数ReentrantLock 实现synchr…...
Python 基础语法详解
一、变量和数据类型 变量 在 Python 中,变量无需声明类型,直接赋值即可。变量名区分大小写。 # 整数类型 age 25 print(age) # 输出:25# 浮点数类型 height 1.75 print(height) # 输出:1.75# 字符串类型 name "张三&…...
批量给 Excel 添加或删除密码保护|Excel 批量设置打开密码和只读密码
我们在将 Excel 文档发送给第三方或者进行存档的时候,对 Excel 文档添加密码保护是非常重要的一个操作。添加保护后的 Excel 文档。就只能有相应权限的用户才能够打开或者编辑操作。尤其是当我们 Excel 文档中内容非常敏感非常重要的时候,添加保护就显得…...
4.JVM-垃圾回收介绍
记录个人学习中记录笔记,如有错误请您指正,谢谢🙏 垃圾回收器发展史 传统垃圾回收: 分代回收 不同代有不同的垃圾回收机制 保底 标记清除算法 垃圾识别算法 引用计数法 缺陷:下图2 出现循环引用 无法解决 可达性分析 大部分(Java,pytho…...
Redis-锁-商品秒杀防止超卖
一、秒杀(Seckill) 1. 定义 秒杀:短时间内(如1秒内)大量用户同时抢购 限量低价商品 的营销活动。典型场景:双11热门商品抢购、小米手机首发、演唱会门票开售。 2. 技术挑战 挑战点说明后果…...
PostgreSQL 多数据库集簇配置及多数据库复制方法【流程+代码实例】
PostgreSQL 多数据库集簇配置及多数据库复制方法 1. 多数据库集簇配置 安装下载完postgresql后,系统此时包含一个postgres用户和一个名为postgres的默认数据库。 PostgreSQL 基本命令 服务管理命令 # 停止和启动及重启PostgreSQL服务 sudo systemctl stop postgr…...
【k8s004】 Docker 打包 K8s镜像
文章目录 一. 准备工作1. 安装 Docker: [官方安装文档](https://docs.docker.com/get-docker/)2. 准备应用代码(示例使用 Node.js 应用) 二. 创建 Dockerfile3、构建镜像(注意最后的点号)4、测试运行5、推送镜像到仓库6、 Kuberne…...
std::invoke详解
基础介绍 c17版本引入了std::invoke特性,这是一个通用的调用包装器,可以统一调用: 普通函数成员函数函数对象Lambda表达式指向成员的指针 它的主要作用是提供一个统一的方式来调用各种可调用对象。 std::invoke依赖的头文件:#…...
第一个vue项目
项目目录 启动vue项目 npm run serve 1.vue.config.js文件 (CLI通过vue-cli-serve启动项目,解析配置配置文件vue-condig-js) // vue.config.js //引入path板块,这是Node.js的一个内置模块,用于处理文件路径,这里引用…...
基于CNN的多种类蝴蝶图像分类
基于CNN的多种类蝴蝶图像分类🦋 基于卷积神经网络对64992786张图像,75种不同类别的蝴蝶进行可视化分析、模型训练及分类展示 导入库 import pandas as pd import os import matplotlib.pyplot as plt import seaborn as sns import numpy as np from …...
Unity插件-适用于画面传输的FMETP STREAM使用方法(三)基础使用
目录 一、插件介绍 二、组件介绍 三、Game View Streaming 1、使用 FM Network UDP 的基本设置 Server Scene Client Scene 2、使用使用 FM WebSocket 的基本设置 四、Audio Streaming 五、Microphone Streaming 一、插件介绍 Unity插件-适用于画面传输的…...
微信小程序wx.request接口报错(errno: 600001, errMsg: “request:fail -2:net::ERR_FAILED“)
来看看报错 报错如下: 请求发送部分,代码如下: uni.request({url: self.serverUrl "/getRealName",method: GET,data: {"code": self.info.code,},header: {"Authorization": uni.getStorageSync(tokenHead) uni.getStorageSync(token)}}…...
使用Docker快速搭建OpenAI兼容的Embeddings与Rerank双API服务
使用Docker快速搭建OpenAI兼容的Embeddings与Rerank双API服务 前言环境准备硬件要求软件依赖双服务部署指南1. Embeddings API部署启动容器参数说明2. Rerank API部署启动容器服务验证与测试通用验证方法1. Embeddings API测试请求示例响应特征2. Rerank API测试请求示例响应解…...
基于Python+MySQL编写的(WinForm)图书管理系统
一、项目需求分析 1.1 项目介绍 项目背景 图书馆管理系统是一些单位不可缺少的部分,书籍是人类不可缺少的精神食粮,尤其对于学校来说,尤其重要。所以图书馆管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管…...
[贪心算法] 摆动序列
1.解析 这里我们的贪心体现在,这里我们只需要找到每一个拐点位置的数字即可, 证明: 当我们在A点时,我们下一步的选择有四种 A到D这个线段内的数字(不包括D)选择D点D到F的点F之后的点 对于A到D来说…...
WPF未来展望:紧跟技术发展趋势,探索新的可能性
WPF未来展望:紧跟技术发展趋势,探索新的可能性 一、前言二、WPF 与.NET 技术的融合发展2.1 拥抱.NET Core2.2 利用.NET 5 及后续版本的新特性 三、WPF 在新兴技术领域的应用拓展3.1 与云计算的结合3.2 融入物联网生态 四、WPF 在用户体验和设计方面的创新…...
低空经济腾飞:无人机送货、空中通勤,未来已来
近年来,低空经济逐渐成为社会关注的焦点。从无人机送货到“空中的士”,再到飞行培训的火热进行,低空经济正迎来前所未有的发展机遇。随着技术进步和政策支持,这一曾经看似遥远的未来场景,正逐步变为现实。 低空经济如何…...
