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.rhkb.cn/news/277799.html

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

相关文章

【图论】计算图的n-hop邻居个数,并绘制频率分布直方图

计算图的n-hop邻居个数&#xff0c;并绘制频率分布直方图 在图论中&#xff0c;n-hop邻居&#xff08;或称为K-hop邻居&#xff09;是指从某个顶点出发&#xff0c;通过最短路径&#xff08;即最少的边数&#xff09;可以到达的所有顶点的集合&#xff0c;其中n&#xff08;或…

Java 面试题之框架

1. Spring 是什么 Sping 是包含了众多工具方法的 IOC 容器&#xff0c;IOC是控制反转&#xff0c;说的是对象的创建和销毁的权利都交给 Spring 来管理了, 它本身又具备了存储对象和获取对象的能力. 。 容器&#xff1a;字面意思&#xff0c;用来容纳某种物品的装置。 比如 L…

Python电梯楼层数字识别

程序示例精选 Python电梯楼层数字识别 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《Python电梯楼层数字识别》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与应…

Windows→Linux,本地同步到服务器

适用背景&#xff1a; 用自己电脑修改代码&#xff0c;使用实验室/公司的服务器炼丹的朋友 优势&#xff1a; 本地 <--> 服务器&#xff0c;实时同步&#xff0c;省去文件传输的步骤 本地改 -> 自动同步到服务器 -> 服务器跑代码 -> 一键同步回本地&#xff…

【Redis】聊聊Redis常见数据类型底层结构

对于Redis来说&#xff0c;其实我们操作的数据类型就是String,List、Set、Zset、Hash&#xff0c;但是具体低层使用什么编码进行存储&#xff0c;在面试中是一个高频面试题&#xff0c;所以今天大概整理下对应的。 RedisObject与DictEntry 其实对于key来说一般都是String类型…

基础知识学习 -- qnx 系统

QNX是一个基于优先级抢占的系统。 这也导致其基本调度算法相对比较简单。因为不需要像别的通用操作系统考虑一些复杂的“公平性”&#xff0c;只需要保证“优先级最高的线程最优先得到 CPU”就可以了。 基本调度算法 调度算法&#xff0c;是基于优先级的。QNX的线程优先级&a…

Java学习笔记(15)

JDK7前时间相关类 Date时间类 Simpledateformat Format 格式化 Parse 解析 默认格式 指定格式 EE&#xff1a;表示周几 Parse&#xff1a;把字符串时间转成date对象 注意&#xff1a;创建对象的格式要和字符串的格式一样 Calendar日历类 不能创建对象 Getinstance 获取当…

PHP 生成图片

1.先确认是否有GD库 echo phpinfo(); // 创建一个真彩色图像 $image imagecreatetruecolor(120, 50);// 分配颜色 $bgColor imagecolorallocate($image, 255, 255, 255); // 白色背景 $textColor imagecolorallocate($image, 230, 230, 230); // 黑色文字// 填充背景 image…

代码算法训练营day10 | 232.用栈实现队列、225. 用队列实现栈

day10: 232.用栈实现队列225. 用队列实现栈 232.用栈实现队列 题目链接 状态&#xff1a; 文档&#xff1a;programmercarl.com 思路&#xff1a; 用栈实现队列。要先明白两者的区别。 栈&#xff1a;单开门&#xff0c;先进后出&#xff0c;只有一端能进出。 队列&#xff1a;…

论文解读之Attention-based Deep Multiple Instance Learning

前言 多实例学习是由监督学习演变而来的&#xff0c;我们都知道&#xff0c;监督学习在训练的时候是一个实例&#xff08;或者说一个样本、一条训练数据&#xff09;对应一个确定的标签。而多实例的特点就是&#xff0c;我们在训练的时候的输入是多个实例对应一个确定的标签&a…

国外visa卡怎么办理,可充ChatGPTPLUS、Claude、Midjourney

很多小伙都在使用ChatGPT&#xff0c;但是想充值ChatGPTPLUS缺需要国外的visa卡&#xff0c;拿自己的银联卡&#xff0c;尝试了好多次还是不行&#xff0c;其实用一张国外的visa卡几分钟就可以升级好 办理国外visa卡&#xff0c;点击获取 国外的visa卡&#xff0c;具体要看你…

HarmonyOS-鸿蒙系统概述

你了解鸿蒙系统吗&#xff1f; 你看好鸿蒙系统吗&#xff1f; 今年秋季即将推出的HarmonyOS Next 星河版热度空前&#xff0c;一起来了解一下吧。本文将从HarmonyOS 的应用场景、发展历程、架构、开发语言、开发工具、生态建设六个角度聊一聊个人的理解。 1、应用场景 鸿蒙…

Go——运算符,变量和常量,基本类型

一.运算符 Go语言内置的运算符有&#xff1a; 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 1.1 算术运算符 注意&#xff1a;(自增)和--(自减)在go语言中是单独的语句&#xff0c;并不是运算符。 1.2 关系运算符 1.3 逻辑运算符 1.4 位运算符 位运算符对整数在内存…

网络编程-套接字相关基础知识

1.1. Socket简介 套接字&#xff08;socket&#xff09;是一种通信机制&#xff0c;凭借这种机制&#xff0c; 客户端<->服务器 模型的通信方式既可以在本地设备上进行&#xff0c;也可以跨网络进行。 Socket英文原意是“孔”或者“插座”的意思&#xff0c;在网络编程…

TCP/UDP协议

TCP/UDP协议都工作在传输层 这两个协议的目标都是在程序之间传输数据&#xff08;可以是文本文件、图片、视频&#xff09;&#xff0c;对于TCP协议和UDP协议来说&#xff0c;都是一堆二进制数。 把人与人之间的通信看成是进程间通信&#xff0c;“写信”是基于非连接的UDP&a…

Leetcode刷题笔记——动态规划(背包问题)篇

Leetcode刷题笔记——动态规划&#xff08;背包问题&#xff09;篇 一、0-1 背包问题 0-1背包问题简介 有 n 件物品和一个最多能背重量为 w 的背包。第 i 件物品的重量是 weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包…

Unload-labs

function checkFile() {var file document.getElementsByName(upload_file)[0].value;if (file null || file "") {alert("请选择要上传的文件!");return false;}//定义允许上传的文件类型var allow_ext ".jpg|.png|.gif";//提取上传文件的类…

代码算法训练营day9 | 28. 实现 strStr() 、459.重复的子字符串

day9&#xff1a; 28. 实现 strStr()KMP的主要应用&#xff1a;什么是前缀表&#xff1a;前缀表是如何记录的&#xff1a; 如何计算前缀表&#xff1a;构造next数组&#xff1a;1、初始化2、处理前后缀不相同的情况3、处理前后缀相同的情况 代码&#xff1a; 459.重复的子字符串…

Mysql 索引、锁与MVCC等相关知识点

文章目录 Mysql锁的类型锁使用MVCC快照读和当前读读视图【Read View】串行化的解决 索引类型存储方式区分逻辑区分实际使用区分索引失效情况 索引建立规范SQL编写规范exlpain字段解析ACID的原理日志引擎慢SQL整合SpringBoot博客记录 Mysql锁的类型 MySQL中有哪些锁&#xff1a…

德人合科技 | 公司办公终端、电脑文件资料 \ 数据透明加密防泄密管理软件系统

天锐绿盾是一款全面的企业级数据安全解决方案&#xff0c;它专注于为企业办公终端、电脑文件资料提供数据透明加密防泄密管理。 首页 德人合科技——www.drhchina.com 这款软件系统的主要功能特点包括&#xff1a; 1. **透明加密技术**&#xff1a; 天锐绿盾采用了透明加密技…