蓝桥杯第十二届c++大学B组详解
目录
1.空间
2.直线
3.路径
4.卡片
5.货物摆放
6.时间显示
7.砝码称重
8.杨辉三角
9.双向排序
10.括号序列
1.空间
题目解析:1Byte = 8bit 1kb = 1024B 1MB = 1024kb;
先将256MB变成Byte = 256 * 1024 * 1024; 再将32位 变成Byte就是 32 / 8 = 4;
那么就是(256 * 1024 * 1024) / 4 = 67108864;
2.直线
题目解析:直线方程式y= kx + b;
k = (y2 - y1) / (x2 - x1);
b = (y1 * x2 - y2 * x1) / (x2 - x1);
使用double类型怕精度损失。再使用set进行去重。最后还要考虑垂直和平行的情况就要加上m + n;
#include <iostream>
#include<set>
using namespace std;set<pair<double,double>> s;void check(int x1, int y1, int x2, int y2)
{if(x1 == x2 || y1 == y2)//平行或者垂直;return;double k = (y2 - y1) * 1.0 / (x2 - x1);double b = (y1 * x2 - y2 * x1) * 1.0 / (x2 - x1);s.insert({k, b});
}int main()
{for(int x1 = 0; x1 < 20; x1++){for(int y1 = 0; y1 < 21; y1++){for(int x2 = 0; x2 < 20; x2++){for(int y2 = 0; y2 < 21; y2++){check(x1, y1, x2, y2);}} }}cout << s.size() + 20 + 21<< endl;return 0;
}
3.路径
题目解析:采用到一个弗洛伊德算法。大家可以自己再csdn里面看一下弗洛伊德算法求图的路径的博客,就很容易上手这个题目.使用二维数组进行存放连接的点。这个使用三次暴力可以在devc++里面跑几十秒就过了,但是在蓝桥杯官网会超时.但是这不重要,重要的是这是个填空题.
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
typedef long long ll;
#define INT 0x3f3f3f3f
ll Edge[2022][2022];
int gcd(int a, int b)//最大公约数
{if (b == 0)return a;return gcd(b, a % b);
}
int lcm(int a, int b)//最小公倍数
{int c = a * b;return c / gcd(a, b);
}
int main()
{//初始化memset(Edge, INT, sizeof(Edge));for (int i = 1; i <= 2021; i++){for (int j = 1; j <= 2021; j++){if (i == j)Edge[i][j] = 0;else {if (abs(i - j) <= 21)//判断差的绝对值是否小于等于21{Edge[i][j] = lcm(i, j);}}}}for (int k = 1; k <= 2021; k++){for (int i = 1; i <= 2021; i++){for (int j = 1; j <= 2021; j++){if (Edge[i][j] > Edge[i][k] + Edge[k][j]){Edge[i][j] = Edge[i][k] + Edge[k][j];}}}}cout << Edge[1][2021];return 0;
}
4.卡片
题目解析:动态dp又来罗, dp[i]表示i张卡片不重复的数量,并且我们可以弄出状态方程.
1张: 1;
2张: (1,1), (1,2),(2,2); 三种不重复的数量,
3张: (1,1), (1,2), (2,2), (1,3), (2,3), (3,3); 就是六种不重复的数量,
那么状态方程dp[i] = ap[i - 1] + i;
#include <iostream>
#include<set>
using namespace std;int dp[100000] = {0};int main()
{int n;cin >> n;dp[1] = 1;for(int i = 2; i < 10000; i++){dp[i] = dp[i - 1] + i;if(n <= dp[i]){cout << i << endl;return 0;}}return 0;
}
5.货物摆放
题目解析:暴力解法,但是还有要稍加修改。如果三个数中有两个是相同的那么一共有三种方法,如果三个数都不同就会有六种方法,三个数全部相同不符合题目意思。这个也是蓝桥杯官网跑不了,但是dev可以等个几十秒就出来了.
#include<iostream>
using namespace std;
#define n 2021041820210418
//n=a*b*c
typedef long long ll;
int ants = 0;
int main()
{for (ll a = 1; a * a * a <= n; a++){if (n % a == 0){for (ll b = a; a * b * b <= n; b++){if (n / a % b == 0){ll c = n / a / b;if (a == b && a == c)ants = 0;else if (a == b || a == c || c == b) ants += 3;else ants += 6;}}}}cout << ants << endl;return 0;
}
6.时间显示
题目解析:根据题目意思进行划时间,但是输入的是毫秒需要变成秒。如果觉得很容易想错,你可以想一下有一个题目提取数字的每一位.
#include<bits/stdc++.h>
using namespace std;int main()
{long long int n;cin >> n;n = n / 1000;n = n % 86400;//去掉除了最后一天的前面的天数;24*60*60int h, m, s;h = n / 3600;//求得最后一天的小时n = n % 3600;m = n / 60;//分钟s = n % 60;//秒数printf("%02d:%02d:%02d",h,m,s); //输出时间常用的形式,不用判断了return 0;
}
7.砝码称重
题目解析:背包问题,采用动态dp,dp[i][j]表示第i个砝码拿到重量j的方案。如果第i-1个砝码可以拿到j个重量那么i个砝码也可以拿到j个重量, 同样i也可以拿到j重量加上/减去输入的砝码的重量,最后只要将可以称重的砝码进行加和就可以算出结果.
#include <iostream>
#include<cmath>
using namespace std;int dp[105][100005];int main()
{int n;cin >> n;//从前i个物品中拿到总重量是j的集合。dp[0][0] = 1;for(int i = 1; i <= n; i++){int a;cin >> a;for(int j = 0; j <= 100000; j++){if(dp[i - 1][j]){dp[i][j] = 1;dp[i][j + a] = 1;dp[i][abs(j - a)] = 1;}}}int ans = 0;for(int i = 1; i <= 100000; i++){if(dp[n][i])ans++;}cout << ans << endl;return 0;
}
8.杨辉三角
题目解析: 这里开始就变得不妙了,这题只过了部分用例,又更好的办法挺难想到的,大家可以看看其他佬的博客.鄙人不才写不出来.
观察上面的规律之后我们可以使用两个数组进行查找.两个数组不断变化每一层,我们就可以得到每一层的数据的位置.
#include <iostream>
using namespace std;
#include<vector>vector<long long int> v1;
long long int n;
long long int ans = 0;//算n的位置的.int main()
{cin >> n;if(n == 1){cout << 1 << endl;return 0;}v1.push_back(1);ans++;for(int i = 0; i < v1.size(); i++){vector<long long int> v2;if(i == 0){v2.push_back(1);ans++;}else{ans++;if(n == v1[i - 1] + v1[i]){cout << ans << endl;return 0;}v2.push_back(v1[i - 1] + v1[i]);}ans++;v2.push_back(1);v2 = v1;}return 0;
}
9.双向排序
题目解析:直接用sort进行排序.其他方法又会的大佬麻烦教教我,阿里嘎多.
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,p,q;
int a[100005];int cmp(int x, int y)
{return x > y;
}int main()
{cin >> n >> m;for(int i = 0; i < n; i++){a[i] = i+1;}while( m > 0 ){m--;cin >> p >> q;if(p == 0) {sort(a, a+q, cmp); // 逆排}else{sort(a+q-1, a+n); // 正排}}for(int i = 0; i < n; i++)cout << a[i] << " ";return 0;
}
10.括号序列
题目解析:这里贴一篇博主的优质博客大家看看吧,自己太菜了,还得多练练.
括号序列--蓝桥杯_括号序列蓝桥杯-CSDN博客
#include <iostream>
#include <cstring>
#include <algorithm>
#include <stdio.h>
using namespace std;typedef long long LL;
const int MOD=1000000007;
const int N=5010;
LL dp[N][N];
char str[N];
int len;
LL func()
{memset(dp,0,sizeof(dp));dp[0][0]=1;for(int i=1;i<=len;i++)//一个括号一个括号的判断{if(str[i]=='('){for(int j=1;j<=len;j++){dp[i][j]=dp[i-1][j-1];//不用考虑dp[i][0] 因为dp[i-1][-1]是不合法的情况 不存在 为0}}else{dp[i][0]=(dp[i-1][0]+dp[i-1][1])%MOD;//特判防止越界 这里数据短,用的是优化前的推断for(int j=1;j<=len;j++){dp[i][j]=(dp[i-1][j+1] + dp[i][j-1])%MOD;}}}for(int i=0;i<=len;i++)if(dp[len][i]) return dp[len][i];//我们需要的就是长度为len添加括号的合法情况,而从前往后遍历出现的第一个有可能的情况就是需要括号数最少的情况,因为左括号可以加很多个,我们仅需添加最少的情况return -1;
}
int main()
{scanf("%s",str+1);//从下标为1开始len=strlen(str+1);LL l=func();reverse(str+1,str+len+1);for(int i=1;i<=len;i++){if(str[i]=='(') str[i]=')';else str[i]='(';}LL r=func();cout<<l*r%MOD;return 0;
}
相关文章:

蓝桥杯第十二届c++大学B组详解
目录 1.空间 2.直线 3.路径 4.卡片 5.货物摆放 6.时间显示 7.砝码称重 8.杨辉三角 9.双向排序 10.括号序列 1.空间 题目解析:1Byte 8bit 1kb 1024B 1MB 1024kb; 先将256MB变成Byte 256 * 1024 * 1024; 再将32位 变成Byte就是 32 / 8 4;…...

Tubi 十岁啦!
Tubi 今年十岁了,这十年不可思议,充满奇迹! 从硅谷一个名不见经传的创业小作坊,转变成为四分之一美国电视家庭提供免费流媒体服务的北美领先的平台; 从费尽心力终于签下第一笔内容合作协议,到现在与 450 …...

Qt C++ 实现文件监视源码
以下是使用Qt C++实现文件监视的一个简单示例代码: #include <QCoreApplication> #include <QFileSystemWatcher> #include <QDebug>int main(int argc, char *argv[...

蓝桥杯第十一届c++大学B组详解
目录 1.字符串排序 2.门牌制作 3.即约分数 4.蛇型填数 5.跑步锻炼 6.七段码 7.成绩统计 8.回文日期 9.字串分值和 10.平面切分 1.字符串排序 题目解析:这个题目真没搞懂。有会的大佬教我一下谢谢。 2.门牌制作 题目解析:出过超级多这类题目&am…...

大模型日报2024-04-10
大模型日报 2024-04-10 大模型资讯 微软研究者提出通过可视化思维提升大型语言模型的空间推理能力 摘要: 微软研究者近日提出了一种新方法,旨在通过可视化思维来增强大型语言模型(LLMs)的空间推理能力。尽管LLMs在语言理解和推理任务方面表现…...

redis修改协议改了,有哪些替代品?
Redis 是一款广泛使用的开源内存数据结构存储,它支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等。然而,由于 Redis 最近更改了其开源许可证,一些用户和开发者可能正在寻找替代品。以下是一些 Redis 的替代品…...

《QT实用小工具·十六》IP地址输入框控件
1、概述 源码放在文章末尾 该项目为IP地址输入框控件,主要包含如下功能: 可设置IP地址,自动填入框。 可清空IP地址。 支持按下小圆点自动切换。 支持退格键自动切换。 支持IP地址过滤。 可设置背景色、边框颜色、边框圆角角度。 下面…...

windows 系统下 mysql 数据库的下载与安装(包括升级安装)
windows 系统下 mysql 数据库的下载与安装(包括升级安装) 一、mysql 介绍: MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。 MySQL 是最流行的关系型数据库管理系统之一…...

Redis Stack十部曲之三:理解Redis Stack中的数据类型
文章目录 前言String字符串作为计数器限制 List限制列表阻塞列表自动创建和删除聚合类型键限制 Set限制 Hash限制 Sorted Set范围操作字典操作更新分数 JSON路径限制 BitMapBitfieldProbabilisticHyperLogLogBloom filterCuckoo filtert-digestTop-KCount-min sketchConfigurat…...

OneForAll安装使用
OneForAll简介 OneForAll是一款功能强大的子域收集工具 原项目地址:GitHub - shmilylty/OneForAll: OneForAll是一款功能强大的子域收集工具 gitee项目地址:OneForAll: OneForAll是一款功能强大的子域收集工具 # 安装Python Windows系统安装python参…...

【现代C++】线程支持库
现代C(C11及其之后的版本)引入了标准的线程支持库,使得多线程编程变得更加简单和可移植。这个库提供了线程管理、互斥量、条件变量和其他同步原语。 1. std::thread - 基本线程 std::thread允许创建执行特定任务的线程。 #include <ios…...

游戏引擎架构01__引擎架构图
根据游戏引擎架构预设的引擎架构来构建运行时引擎架构 ...

[Java、Android面试]_15_Android为什么使用Binder?
Android为什么使用Binder?用 Linux原有的IPC不行吗? 本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。 整理成了面试系列,由于时间有限,每天…...

Python+Selenium+Unittest 之Unittest3(TestSuite()和TextTestRunner())
目录 1:addTest() 2、addTests() 3:discover() 上一篇说了Unittest的一个基本的执行顺序,那如果我们想要调整用例的执行先后顺序的话,可以用TestSuite()和TextTestRunner()了,可以这么理解,比如一个班级…...

3D桌面端可视化引擎HOOPS Visualize如何实现3D应用快速开发?
HOOPS Visualize是一个开发平台,可实现高性能、跨平台3D工程应用程序的快速开发。一些主要功能包括: 高性能、以工程为中心的可视化,使用高度优化的OpenGL或DirectX驱动程序来充分利用可用的图形硬件线程安全的C和C#接口,内部利用…...

Vue探索之Vue2.x源码分析(二)
一.Virtual Dom 虚拟DOM是一种轻量级的抽象,它允许我们在Javascript中创建、更新和删除DOM元素。它是React等现代Javascript框架的核心概念之一。 Vue的虚拟dom是一种抽象层的概念,它使得Vue可以高效地更新Dom。虚拟Dom是通过Javascript对象来表示DOM结…...

人工智能分类算法概述
文章目录 人工智能主要分类算法决策树随机森林逻辑回归K-均值 总结 人工智能主要分类算法 人工智能分类算法是用于将数据划分为不同类别的算法。这些算法通过学习数据的特征和模式,将输入数据映射到相应的类别。分类算法在人工智能中具有广泛的应用,如图…...

理解 Golang 变量在内存分配中的规则
为什么有些变量在堆中分配、有些却在栈中分配? 我们先看来栈和堆的特点: 简单总结就是: 栈:函数局部变量,小数据 堆:大的局部变量,函数内部产生逃逸的变量,动态分配的数据&#x…...

《QT实用小工具·二十四》各种数学和数据的坐标演示图
1、概述 源码放在文章末尾 该项目实现了各种数学和数据的坐标演示图,下面是demo演示: 项目部分代码如下: #ifndef FRMMAIN_H #define FRMMAIN_H#include <QWidget> class QAbstractButton;namespace Ui { class frmMain; }class fr…...

【S32K3 MCAL配置】-3.1-CANFD配置-经典CAN切换CANFD(基于MCAL+FreeRTOS)
"><--返回「Autosar_MCAL高阶配置」专栏主页--> 目录(共5页精讲,基于评估板: NXP S32K312EVB-Q172,手把手教你S32K3从入门到精通) 实现的架构:基于MCAL层 前期准备工作:...

IEC101、IEC103、IEC104、Modbus报文解析工具
一、概述 国际电工委员会第57技术委员会(IEC TC57)1995年出版IEC 60870-5-101后,得到了广泛的应用。为适应网络传输,2000年IEC TC57又出版了IEC 60870-5-104:2000《远东设备及系统 第5-104部分:传输规约-采…...

node res.end返回json格式数据
使用 Node.js 内置 http 模块的createServer()方法创建一个新的HTTP服务器并返回json数据,代码如下: const http require(http);const hostname 127.0.0.1; const port 3000;const data [{ name: 测试1号, index: 0 },{ name: 测试2号, index: 1 },…...

产品开发流程
产品开发流程 时间:2024年04月10日 作者:小蒋聊技术 邮箱:wei_wei10163.com 微信:wei_wei10 产品开发流程_小蒋聊技术_免费在线阅读收听下载 - 喜马拉雅欢迎收听小蒋聊技术的类最新章节声音“产品开发流程”。时间:…...

Python蓝桥杯赛前总结
1.进制转换 (1) 2进制转换为其他进制 # 2转10 int(n, 2) # 2转8 oct(int(n, 2)) # 2转16 hex(int(n, 2)) (2) 8进制转换为其他进制 #8转10 int(n, 8) #8转2 bin(int(n, 8)) #8转16 hex(int(n, 8)) (3) 10进制转换为其他进制 #10转2 bin(n) #10转8 oct(n) #10转16 hex(n) …...

20240326-1-KNN面试题
KNN面试题 1.简述一下KNN算法的原理 KNN算法利用训练数据集对特征向量空间进行划分。KNN算法的核心思想是在一个含未知样本的空间,可以根据样本最近的k个样本的数据类型来确定未知样本的数据类型。 该算法涉及的3个主要因素是:k值选择,距离度…...

【论文速读】| MASTERKEY:大语言模型聊天机器人的自动化越狱
本次分享论文为:MASTERKEY: Automated Jailbreaking of Large Language Model Chatbots 基本信息 原文作者:Gelei Deng, Yi Liu, Yuekang Li, Kailong Wang, Ying Zhang, Zefeng Li, Haoyu Wang, Tianwei Zhang, Yang Liu 作者单位:南洋理工…...

jvm运行情况预估
相关系统 jvm优化原则-CSDN博客 执行下面指令 jstat gc -pid 能计算出一些关键数据,有了这些数据,先给JVM参数一些的初始的,比堆内存大小、年轻代大小 、Eden和Srivivor的比例,老年代的大小,大对象的阈值,…...

Day105:代码审计-PHP原生开发篇SQL注入数据库监控正则搜索文件定位静态分析
目录 代码审计-学前须知 Bluecms-CNVD-1Day-常规注入审计分析 emlog-CNVD-1Day-常规注入审计分析 emlog-CNVD-1Day-2次注入审计分析 知识点: 1、PHP审计-原生态开发-SQL注入&语句监控 2、PHP审计-原生态开发-SQL注入&正则搜索 3、PHP审计-原生态开发-SQ…...

Python:如何对FY3D TSHS的数据集进行重投影并输出为TIFF文件以及批量镶嵌插值?
完整代码见 Github:https://github.com/ChaoQiezi/read_fy3d_tshs,由于代码中注释较为详细,因此博客中部分操作一笔带过。 01 FY3D的HDF转TIFF 1.1 数据集说明 FY3D TSHS数据集是二级产品(TSHS即MWTS/MWHS 融合大气温湿度廓线/稳定度指数/…...

CentOS 镜像下载
CentOS 镜像下载:https://www.centos.org/download/ 选择合适的架构,博主选择x86_64,表示CentOS7 64位系统x86架构,如下: 或者直接访问以下网站下载 清华大学开源软件镜像站:https://mirrors.tuna.tsin…...