24.第12届蓝桥杯省赛真题题解

A.空间(100%)

计算机存储单位计算

1TB=2^10 GB

1GB=2^10 MB

1MB=2^10 KB

1KB=2&10 B

1B=8 bit(bit位二进制的最小的存储单位)

#include <iostream>
#include <cmath>using namespace std;
//2^28B  2^2int main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout<<(int)pow(2,26)<<endl;return 0;
}

B.卡片(100%)

#include <iostream>
#include <cmath>using namespace std;
const int N=20;
int cnt[N];
int main(){ std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n=2021;for(int i=0;i<=9;i++){cnt[i]=n;}bool flag=false;int x;for(x=1;;x++){int t=x;while(t){//123int num=t%10;if(--cnt[num]<0){flag=true;break;}t=t/10;}if(flag) break;}cout<<x-1<<endl;return 0;
} 

C.直线(100%)

根据y=kx+b 俩个点确定唯一的一个(k,b)对 放在set中去重加 输出个数
#include <iostream>
#include <cmath>
#include <set>
using namespace std;int main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);set<pair<double,double>> st;for(int x1=0;x1<=19;x1++){for(int y1=0;y1<=20;y1++){for(int x2=x1+1;x2<=19;x2++){for(int y2=0;y2<=20;y2++){double k=(y2-y1)*1.0/(x2-x1);double b=(y1 * x2 - y2 * x1) *1.0/ (x2 - x1);st.insert({k,b});}}}}cout<<st.size()+20<<endl;return 0;
}

D.物品摆放(100%)

枚举3个位置的值

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#include <iostream>
#include <vector>
#define int long long 
using namespace std;
int n=2021041820210418,ans;
vector<int> vec;
signed main(){ std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);for(int i=1;i*i<=n;i++){if(n%i==0){//是因子 16vec.push_back(i);//2if(i!=n/i) vec.push_back(n/i);//8}}for(int i=0;i<vec.size();i++){for(int j=0;j<vec.size();j++){for(int k=0;k<vec.size();k++){if(vec[i]*vec[j]*vec[k]==n){ans++;}}}} cout<<ans<<endl;return 0;
} 

E.路径(100%)

Dijkstra(单源最短路)

时间复杂度O(n^2)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不用邻接表邻接矩阵版本

#include <iostream>
#include <climits>
#include <cmath>
using namespace std;
const int N=2021;
int n=2021,mindis[N],st=1,t=2021;
bool vis[N];
int gcd(int a,int b){return b==0? a:gcd(b,a%b);
}
int lcm(int a,int b){return a/gcd(a,b)*b;
}
void dijkstra(int s){mindis[s]=0;for(int i=1;i<=n;i++){int mi=INT_MAX,miId=0;for(int j=1;j<=n;j++){if(!vis[j]&&mi>mindis[j]){mi=mindis[j];miId=j;}}vis[miId]=1;for(int i=1;i<=n;i++){if(miId-i!=0&&abs(miId-i)<=21&&!vis[i]){int id=i,w=lcm(miId,id);if(mi+w<mindis[id]){mindis[id]=mi+w;}}}}
}int main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);for(int i=1;i<=n;i++) mindis[i]=INT_MAX;dijkstra(st);cout<<mindis[t]<<endl;return 0;
}

邻接表版本

#include <iostream>
#include <vector>
#include <cmath>
#include <climits>
#define int long longusing namespace std;
const int N=3e3+10,INF=INT_MAX;
vector<pair<int,int>> g[N];
int n=2021,mindis[N],st=1,t=2021;
bool vis[N];
//mindis[i]-->起点到i点的最短路 
//6 12 
int gcd(int a,int b){return b==0?a:gcd(b,a%b);
}
int lcm(int a,int b){return a/gcd(a,b)*b;
}
void dijkstra(int s){mindis[s]=0;for(int i=1;i<=n;i++){int mi=INT_MAX,miId=0;//在集合中找到未被标记过的最小值,即起点到该点的最短路 for(int j=1;j<=n;j++){if(!vis[j]&&mi>mindis[j]){mi=mindis[j];miId=j;}}vis[miId]=1;//以miId位中转点,访问miId未被标记过的邻接点,更新集合 for(int j=0;j<g[miId].size();j++){int id=g[miId][j].first,w=g[miId][j].second;if(!vis[id]&&mindis[id]>mi+w){mindis[id]=mi+w;}}}
} 
signed main(){ std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i!=j&&abs(i-j)<=21){//无向图,双向连边g[i].push_back({j,lcm(i,j)});g[j].push_back({i,lcm(i,j)});}}}fill(mindis+1,mindis+n+1,INF);dijkstra(st);cout<<mindis[t];return 0;
} 

Floyd(多元最短路)

三层for循环 时间复杂度O(n^3)
#include <iostream>
#include <vector>
#include <cmath>
#include <climits>
#define int long longusing namespace std;
const int N=3e3+10,INF=INT_MAX;
int n=2021,mindis[N][N],st=1,t=2021;
bool vis[N];
//mindis[i][j]-->起点i到j点的最短路 
//6 12 
int gcd(int a,int b){return b==0?a:gcd(b,a%b);
}
int lcm(int a,int b){return a/gcd(a,b)*b;
}
void floyd(){//枚举中转站for(int k=1;k<=n;k++){//枚举起点for(int i=1;i<=n;i++){//枚举终点for(int j=1;j<=n;j++){//判断是否又连边if(mindis[i][k]!=INF&&mindis[k][j]!=INF){//判断是否需要更新mindis集合if(mindis[i][k]+mindis[k][j]<mindis[i][j]){mindis[i][j]=mindis[i][k]+mindis[k][j];}}}}}
}
signed main(){ std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);fill(mindis[0],mindis[0]+N*N,INF);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i!=j&&abs(i-j)<=21){mindis[i][j]=mindis[j][i]=lcm(i,j);}}}floyd();cout<<mindis[st][t]<<endl;return 0;
} 

F.时间显示(100%)

#include <iostream>
#include <algorithm>
#define int long long
using namespace std;
int HH,MM,SS,x1,x2;
const int DAY=24*60*60,H=60*60,M=60;
//1618708103123
//449641:08:23
signed main(){ std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin>>n;//1618708103123n=n/1000;//46863HH=n/H%24;//13x1=n%H;//63MM=x1/M;//1x2=x1%M;//3SS=x2;printf("%02ld:%02ld:%02ld\n",HH,MM,SS);return 0;
}

G.砝码称重(10%)

搜索+回溯

#include <iostream>
#include <vector>
#include <cmath>
#include <climits>
#include <set>
#define int long longusing namespace std;
const int N=1e5+10;
int a[N],n; 
bool vis[N];
set<int> st; 
void dfs(int sum,int depth){//3//1 4 6//insert   d 1 sum 1//insert 1 d 2 sum 5//insert 5 d 3 sum 10//insert 10d 4 sum  if(depth>=2) st.insert(sum);if(depth==n+1) return;for(int i=1;i<=n;i++){if(!vis[i]){vis[i]=1;dfs(sum+a[i],depth+1);dfs(abs(sum-a[i]),depth+1);vis[i]=0;}}
}
signed main(){ std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}dfs(0,1);if(st.find(0)!=st.end()) st.erase(0);cout<<st.size()<<endl;return 0;
} 

H.杨辉三角(40%)

#include <iostream>
#define int long long
using namespace std;
const int N=1e3+10;
int a[N][N];
int n=1e2+10,ans;
signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin>>t;for(int i=1;i<=n;i++){a[i][1]=1;a[i][i]=1;}for(int i=3;i<=n;i++){for(int j=2;j<=i-1;j++){a[i][j]=a[i-1][j]+a[i-1][j-1];}}for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){if(a[i][j]==t){cout<<++ans<<endl;return 0;}ans++;}}return 0;
}

I.双向排序(60%)

#include <iostream>
#include <algorithm>
//#define int long long
using namespace std;
const int N=1e5+10;
int a[N],n,m;
bool cmp(int l,int r){return l>r;
}
signed main(){std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++){a[i]=i;}int sign,k;while(m--){cin>>sign>>k;if(sign==0){//从1到k降序sort(a+1,a+k+1,cmp);}else{//从k到n升序sort(a+k,a+n+1);}}for(int i=1;i<=n;i++){cout<<a[i]<<' ';}return 0;
}

J.括号序列(100%)

#include <iostream>
#include <string>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
#define int long long
const int N = 5e3 + 10, mod = 1e9 + 7; // 定义常量N和mod,mod用于计算结果的模数
int n; // 输入的字符串长度
string str; // 存储输入的括号序列
int f[N][N]; // 动态规划数组,f[i][j]表示前i个字符中有j个左括号待匹配时的方案数量// calc函数用于计算结果
int calc() {memset(f, 0, sizeof(f)); // 初始化动态规划数组f[0][0] = 1; // 初始状态设为1,表示没有任何括号的情况只有一种可能for (int i = 1; i <= n; i++) { // 遍历输入的括号序列if (str[i] == '(') { // 如果当前字符是左括号for (int j = 1; j <= n; j++) { // 遍历所有可能的未匹配的左括号数量f[i][j] = f[i - 1][j - 1]; // 状态转移,因为遇到左括号,需要匹配的左括号数量减少1}}else { // 如果当前字符是右括号f[i][0] = (f[i - 1][0] + f[i - 1][1]) % mod; // 状态转移,如果之前没有未匹配的左括号,只能添加一个左括号,否则可以不添加或添加一个左括号for (int j = 1; j <= n; j++) { // 遍历所有可能的未匹配的左括号数量f[i][j] = (f[i - 1][j + 1] + f[i][j - 1]) % mod; // 状态转移,因为遇到右括号,需要匹配的左括号数量增加1,或者添加一个右括号来消除一个未匹配的左括号}}}for (int i = 0; i <= n; i++) { // 遍历所有可能的未匹配的左括号数量if (f[n][i]) { // 如果存在合法的方案return f[n][i]; // 返回方案数量}}return -1; // 如果没有合法的方案,返回-1
}signed main() {cin >> str; // 输入括号序列n = str.size(); // 计算括号序列的长度str = " " + str; // 在字符串前添加一个空格,便于索引操作int l = calc(); // 调用calc函数计算结果reverse(str.begin() + 1, str.end()); // 反转括号序列for (int i = 1; i <= n; i++) { // 将括号序列中的左括号和右括号互换if (str[i] == '(') str[i] = ')';else str[i] = '(';}int r = calc(); // 再次调用calc函数计算结果printf("%lld\n", l * r % mod); // 输出结果,即两次计算结果的乘积对mod取模return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/751450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言入门】浮点型数据在内存中的存储

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;C语言 个人主页&#xff1a;Celias blog~ 目录 ​编辑 引言 引例 一、浮点型在内存中的存储方式 1.1 …

在idea中配置tomcat服务器,然后部署一个项日

1.下载tomcat Tomcat下载 点击右边的tomcat8 找到zip点击下载 下载完&#xff0c;解压到你想放置的路径下 2.配置环境变量 打开设置找到高级系统设置点击环境变量 点击新建&#xff0c;变量名输入&#xff1a;CATALINA_HOME&#xff0c;变量值就是Tomcat的安装路径&#x…

【QT+QGIS跨平台编译】之七十七:【QGIS_Gui跨平台编译】—【错误处理:字符串错误】

文章目录 一、字符串错误二、处理方法三、涉及到的文件一、字符串错误 常量中有换行符错误:(也有const char * 到 LPCWSTR 转换的错误) 二、处理方法 需要把对应的文档用记事本打开,另存为 “带有BOM的UTF-8” 三、涉及到的文件 src\gui\qgsadvanceddigitizingdockwidge…

智慧礼金:电子礼金薄,让礼薄更添智能,你确定不进来看看?

智慧礼金&#xff1a;电子礼金薄&#xff0c;让礼薄更添智能&#xff0c;你确定不进来看看&#xff1f; 一、重要声明二、相关介绍三、使用好处四、如何找到该小程序 随着科技的不断进步&#xff0c;传统的纸质礼金簿已经逐渐被电子化管理所取代。今天&#xff0c;我们要向大家…

Java解决完全二叉树的节点个数

Java解决完全二叉树的节点个数 01 题目 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的…

1990-2022年各省全要素生产率数据(仅结果)

1990-2022年各省全要素生产率数据&#xff08;仅结果&#xff09; 1、时间&#xff1a;1990-2022年 2、指标&#xff1a;地区、年份、OLS、FE、RE、DGMM、SGMM、SFA1、SFA2、SFA3、SFA3D、TFE、非参数法 3、范围&#xff1a;31省 4、计算说明&#xff1a; 产出指标&#x…

【自动化测试】如何在jenkins中搭建allure

相信大家在做自动化测试过程中&#xff0c;都会用到自动化测试环境&#xff0c;目前最常见的就是通过容器化方式部署自动化测试环境&#xff0c;但对于一些测试小白&#xff0c;不是很会搭建持续集成环境&#xff0c;特别是从0-1的过程&#xff0c;需要自行搭建很多依赖环境&am…

奇数乘积(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i 1;int j 3;//循环运算&#xff1b;while (j < 12){//运算&#xff1b;i i * j;//改变数值&#xff1b;j 2…

rt-thread之通讯协议modbus软件包的使用记录(lwip+modbus组合)

前言 使用freemodbus软件包使用网口通讯(sallwip)ip地址使用dhcp动态获取 软件包 相关宏定义 /*-----------------------------------------NET 宏定义-------------------------------------------*/#define RT_USING_SAL #define SAL_INTERNET_CHECK /* Docking with prot…

前端框架vue的样式操作,以及vue提供的属性功能应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

【Linux】环境基础开发工具使用

目录 Linux软件管理器 yum 1.什么是软件包 2.查看软件包 3安装与卸载 vim-Linux编辑器 1.vim基础概念 2.vim的基础操作 命令模式基本操作 底层模式基本操作 3、其它模式 Linux编译器 gcc/g 1.如何进行编译 2.编译的四个过程 预处理(-E) 编译(-S) 汇编(-c) 链接…

python二级备考(2)-简单应用题

第1套 使用turtle库的turtle. right()函数和turtle.fd()函数绘制一个菱形&#xff0c;边长为200像素&#xff0c;4个内角度数为2个60度和2个120度 键盘输入一组人员的姓名、性别、年龄等信息&#xff0c;信息间采用空格分隔&#xff0c;每人一行&#xff0c;空行回车结束录入&a…

EMQX 实践

MQTT 核心概念 发布订阅 MQTT 基于发布订阅模式&#xff0c;它解耦了消息的发送方&#xff08;发布者&#xff09;和接收方&#xff08;订阅者&#xff09;&#xff0c;引入了一个中间代理的角色来完成消息的路由和分发。发布者和订阅者不需要知道彼此的存在&#xff0c;他们…

mybatis实践篇(一)

日志&#xff08;logImpl&#xff09; StdOutImpl <setting name"logImpl" value"org.apache.ibatis.logging.stdout.StdOutImpl"/>Slf4jImpl <setting name"logImpl" value"org.apache.ibatis.logging.slf4j.Slf4jImpl"/&…

cannot find -xml2: No such file or directory的解决方法

一&#xff0c;问题现象 在编译库的时候出现如下图所示的报错&#xff1a;C:/msys64/mingw32/bin/…/lib/gcc/i686-w64-mingw32/13.2.0/…/…/…/…/i686-w64-mingw32/bin/ld.exe: ca nnot find -lxml2: No such file or directory collect2.exe: error: ld returned 1 exit s…

146 Linux 网络编程2 ,Socket编程,如何创建Linux 服务器 和linux 客户端

IPport 就是一个程序在网络上的身份证号码。 这意味着我们需要如果写一个服务器&#xff0c;至少需要将这台服务器的ip 和 端口号写到程序里面。 实际上更细化的说&#xff1a;应该是将这三都写进程序里面 &#xff1a; IP类型&#xff08;IPV4或者IPV6&#xff09;&#xff…

linux——进程(1)

目录 一、概念 1.1、认识进程 1.2、进程描述符&#xff08;PCB&#xff09; 1.3、进程的结构体&#xff08;task_struct&#xff09; 二、查看进程 三、获取进程的Pid和PPid 3.1、通过系统调用获取进程的PID和PPID 四、创建进程 4.1、fork() 4.2、用if进行分流 五、…

NCV1117ST50T3G线性稳压器芯片中文资料规格书PDF数据手册引脚图图片价格参数

产品概述&#xff1a; NCP1117系列为低压差&#xff08;LDO&#xff09;正向线性电压稳压器&#xff0c;能够提供超过1.0A的输出电流&#xff0c;800mA时温度范围内最大压差为1.2V。这一系列包括八个固定输出电压&#xff1a;1.5V、1.8V、2.0V、2.5V、2.85V、3.3V、5.0V 和 12…

2024/3/15 记录简版抖音部署遇到的问题

1、Centos连不上网 参考这一篇&#xff1a;虚拟机 CentOS 有线连接图标直接消失&#xff0c;网络连接不上&#xff0c;网络连接失败的解决方案&#xff08;亲测有效&#xff09;_centos网络图标不见了-CSDN博客 2、SQLyog连接不到docker中的mysql 原因是对密码有加密过程 &a…