第十四届蓝桥杯(八题C++ 题目+代码+注解)

目录

题目一(日期统计 纯暴力):

代码:

 题目二(01串的熵 模拟):

代码:

 题目三(治炼金属):

代码:

 题目四(飞机降落 深度搜索):

代码:

题目五(接龙数列 动态规划):

代码:

 题目六(岛屿个数 广度优先):

 代码:

题目七(子串简写 尺取法):

代码:

题目八(整数删除):

代码:

题目一(日期统计 纯暴力):

代码:

#include <iostream>
using namespace std;
int main() 
{int array[100] = {5, 6, 8, 6, 9, 1, 6, 1, 2, 4, 9, 1, 9, 8, 2, 3, 6, 4, 7, 7,5, 9, 5, 0, 3, 8, 7, 5, 8, 1, 5, 8, 6, 1, 8, 3, 0, 3, 7, 9,2, 7, 0, 5, 8, 8, 5, 7, 0, 9, 9, 1, 9, 4, 4, 6, 8, 6, 3, 3,8, 5, 1, 6, 3, 4, 6, 7, 0, 7, 8, 2, 7, 6, 8, 9, 5, 6, 5, 6,1, 4, 0, 1, 0, 0, 9, 4, 8, 0, 9, 1, 2, 8, 5, 0, 2, 5, 3, 3};int Month[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };int ans = 0;for (int month = 1; month <= 12; ++month)//枚举月{for (int day = 1; day <= Month[month]; ++day)//枚举天{int date[8] = { 2, 0, 2, 3, month / 10, month % 10, day / 10, day % 10 };//把八位数得出int k = 0;for (int i = 0; i < 100; ++i) //遍历100个数,是否能满足有该天{if (array[i] == date[k]) //满足该位{++k;//下一位if (k == 8) //等于8,即满足该年月日,答案加一{ans++;break;}}}}}cout << ans;return 0;
}

 题目二(01串的熵 模拟):

代码:

#include <iostream>//H(s)= -(0的个数)/(总长度)*log2((0的个数)/(总长度))*0的个数-(1的个数)/(总长度)*log2((1的个数)/(总长度))*1的个数
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{int n = 23333333;//0出现的次数更少for (int i = 1; i < n / 2; ++i){double a = i * 1.0 / n;//0的占比double b = (n - i) * 1.0 / n;//1的占比double res1,res2;res1 = 0 - (a * log2(a) * i);//求0的部分res2 = 0 - b * log2(b) * (n - i);//求1的部分if (abs((res1+res2) - 11625907.5798) < 0.0001)//差距在0.000内{cout << i << endl;break;}}return 0;
}

 题目三(治炼金属):

代码:

#include <iostream>
#include <algorithm>
using namespace std;
struct node
{int x, s;
};
bool cmp(node a, node b)//v小的排前
{return a.x / a.s < b.x / b.s;
}
int main()
{int n;cin >> n;int maxx = 1e9;node a[10100];for (int i = 1; i <= n; i++){cin >> a[i].x >> a[i].s;}sort(a + 1, a + 1 + n, cmp);//能满足所有的,且v为最大maxx = a[1].x / a[1].s;int minn = 0;for (int z = maxx; z >= 1; z--)//由最大的往前算,递减,直到有一个不满足{int flag = 0;for (int i = 1; i <= n; i++){if (a[i].x / z > a[i].s){flag = 1;minn = z;break;}}if (flag == 1)break;}cout << minn + 1 << " " << maxx;
}

 题目四(飞机降落 深度搜索):

代码:

#include <iostream>
#include <vector>
using namespace std;
struct plane// 创建飞机结构体变量
{int t, d, l;
};
bool vis[15];  // true表示飞机降落,false表示飞机未降落
bool flag;  // 标记是否全部安全降落
vector<plane> p(15);
int m, cnt;
void dfs(int cnt,int last)  // lasttime表示此前所有飞机降落所需的单位时间
{if (cnt == m)//所有飞机都可降落{flag = true;return;}for (int i = 0; i < m; i++)//遍历所有飞机{if (!vis[i] && p[i].t + p[i].d >= last)  // 还未降落且只有最迟降落时间(来的时刻+盘旋时间) > lasttime 的飞机才可以安全降落{vis[i] = true;dfs(cnt + 1, max(last, p[i].t) + p[i].l);vis[i] = false;}}
}int main()
{int T;cin >> T;while (T--){cin >> m;for (int i = 0; i < m; ++i)cin >> p[i].t >> p[i].d >> p[i].l;flag = false;dfs(0, 0);if (flag)cout << "YES" << endl;elsecout << "NO" << endl;}return 0;
}

题目五(接龙数列 动态规划):

代码:

#include <iostream>//动态规划,类0、1背包问题
#include <string>
using namespace std;
int dp[10];//第n个时以i结尾的最长接龙序列
int main()
{int n;cin >> n;string s;int m = 0;for (int i = 0; i < n; i++) {cin >> s;int x = s[0] - '0', y = s.back() - '0';//x表示该数的首字母,y表示该数的最后一个字母//除了以y结尾的,其它不变dp[y] = max(dp[x] + 1, dp[y]);//dp[x]+1表示选该数字时的最长序列,dp[y]表示不选该数字时的最长序列,继承m = max(m, dp[y]);//每次比较,记录最大值}cout << n - m << endl;return 0;
}

 题目六(岛屿个数 广度优先):

 代码:

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
const int N = 77;
string s[N];
int book[N][N];
int m, n, ans=0;
int dx[8] = { 0,0,1,-1,1,1,-1,-1 };
int dy[8] = { 1,-1,0,0,1,-1,1,-1 };
int check(int x,int y)//通过海水(0)是否能到达边界判断这个岛屿是否在环岛内
{queue<pair<int, int>>q;q.push({ x, y });int vis[N][N];memset(vis, 0, sizeof(vis));//访问数组,初始化为0while (!q.empty()){x = q.front().first, y = q.front().second;q.pop();if (x == 1 || x == n || y == 1 || y == m)//到边界,则不在环岛内return 1;for (int i = 0; i < 8; i++){int tx = x + dx[i], ty = y + dy[i];if (vis[tx][ty] == 1 || s[tx][ty] == '1')//边界条件continue;vis[tx][ty] = 1;q.push({ tx,ty });}}return 0;
}
void bfs(int x,int y)//遍历这个岛屿
{queue<pair<int, int>>q;q.push({ x,y });book[x][y] = 1;while (!q.empty()){x = q.front().first, y = q.front().second;q.pop();for (int i = 0; i < 4; i++){int tx = x + dx[i], ty = y + dy[i];if (tx<1 || ty<1 || tx>n || ty>m || book[tx][ty] == 1 || s[tx][ty] == '0')//边界条件continue;book[tx][ty] = 1;q.push({ tx,ty });}}
}
void solve()
{memset(book, 0, sizeof(book));//访问数组,初始为0cin >> n >> m;for (int i = 1; i <= n; i++)cin >> s[i], s[i] = " " + s[i];for(int i=1;i<=n;i++)for (int j = 1; j <= m; j++){if (book[i][j] == 0 && s[i][j] == '1')//没访问过且为陆地{bfs(i, j);if (check(i, j))//判断是否在环岛内,不在则加一ans++;}}cout << ans << endl;
}
int main()
{int T;cin >> T;while (T--){ans = 0;solve();}
}

题目七(子串简写 尺取法):

代码:

#include <iostream>//尺取法
using namespace std;
int k, t;
string s;
long long sum = 0;
int main()
{char c1, c2;cin >> k >> s >> c1 >> c2;for (int j = 0; j < s.length(); j++){if (s[j] == c1)  //t记录j及以前c1的个数t++;if (s[j + k - 1] == c2) //刚好满足k之后的是否为c2sum += t;}cout << sum;return 0;
}

题目八(整数删除):

代码:

#include<iostream>
#include<vector>
#include<queue>
#include<functional>//greater降序排序,less升序排序
#define int long long
using namespace std;
typedef pair<int, int> pii;
const int N = 5e5 + 10;
int a[N], l[N], r[N], st[N];//l存左下标,r存右下标
signed main()
{int n, k;cin >> n >> k;priority_queue<pii, vector<pii>, greater<pii>> q;//最小堆排序for (int i = 0; i < n; i++){cin >> a[i];q.push({ a[i],i });//存值和下标st[i] = a[i];//存值l[i] = i - 1;r[i] = i + 1;if (r[i] == n) r[i] = -1;}while (k)//k次操作{pii t = q.top();//取对顶q.pop();if (t.first != st[t.second])//值与之前不相等,则把新值,下标存入,重新排序{q.push({ st[t.second],t.second });continue;}k--;int pos = t.second;//取该次的下标if (l[pos] >= 0) st[l[pos]] += t.first;//左加值if (r[pos] >= 0) st[r[pos]] += t.first;//右加值if (l[pos] >= 0) r[l[pos]] = r[pos];//该左边值的右下标if (r[pos] >= 0) l[r[pos]] = l[pos];//该右边值的左下标st[pos] = -1;//标记为-1,表示移除队列}for (int i = 0; i < n; i++)//不等与-1的,按序输出{if (st[i] != -1)cout << st[i] << ' ';}return 0;
}

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

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

相关文章

springcloud基本使用二(远程调用)

创建两个springboot maven子项目 子项目名称分别为order-server和user-server 配置user-server子项目: 所需依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependenc…

【洛谷】P9240 [蓝桥杯 2023 省 B] 冶炼金属

题目链接 P9240 [蓝桥杯 2023 省 B] 冶炼金属 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路 这道题可以用数学的方法去做&#xff0c;但是我想不到&#x1f607;有兴趣的可以去看看数学的题解 比较简单的思路就是二分查找&#xff0c;轻松简单不费脑&#xff0c;带你…

Linux中查看文件内容的命令

文章目录 一、七类常见的Linux的文件二、显示命令三、分页显示四、显示文件前后内容五、压缩、解压缩六、补充 一、七类常见的Linux的文件 字符文件类型-普通文件&#xff0c;包括纯文本文件、二进制文件、各种压缩文件等。在find命令中&#xff0c;type 选项中用 f来表示d目录…

共享社会经济路径(SSP1-5)中国及分省人口预估数据库_v2

v1数据集&#xff1a; 在共享社会经济路径&#xff08;SSPs&#xff09;全球框架下&#xff0c;根据本地化人口和经济参数&#xff0c;采用人口-发展-环境&#xff08;PDE&#xff09;模型&#xff0c;构建2020-2100年SSPs人口格点数据&#xff1b;采用柯布-道格拉斯&#xff…

AcWing刷题-游戏

游戏 DP l lambda: [int(x) for x in input().split()]n l()[0] w [0] while len(w) < n:w l()s [0] * (n 1) for i in range(1, n 1): s[i] s[i - 1] w[i]f [[0] * (n 1) for _ in range(n 1)]for i in range(1, n 1): f[i][i] w[i]for length in range(2, …

C,C++——指针详解

目录 1.指针的基本概念 代码示例&#xff1a; 2.指针所占内存空间 代码示例&#xff1a; 3.空指针和野指针 代码示例&#xff1a; 4.const修饰指针 代码示例&#xff1a; 5.指针和数组 代码示例&#xff1a; 6.指针和函数 代码示例&#xff1a; 7.指针&#x…

C++面向对象:C++的垃圾回收

垃圾收集是编程语言中 使用的内存管理技术之一。 它是一种自动内存管理技术&#xff0c;作为许多编程语言的功能添加。垃圾收集器收集或回收分配给变量或对象但不再被程序使用的内存&#xff1b; 这也称为垃圾。 三种基本的垃圾收集算法及其改进算法 1、引用计数算法 引用技…

【算法刷题day10】Leetcode:232.用栈实现队列、225. 用队列实现栈

文章目录 Leetcode 232.用栈实现队列解题思路代码总结 Leetcode 225. 用队列实现栈解题思路代码总结 stack、queue和deque对比 草稿图网站 java的Deque Leetcode 232.用栈实现队列 题目&#xff1a;232.用栈实现队列 解析&#xff1a;代码随想录解析 解题思路 一个栈负责进&a…

Kafka入门到实战-第二弹

Kafka入门到实战 Kafka快速开始官网地址Kafka概述Kafka术语Kafka初体验更新计划 Kafka快速开始 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://kafka.apache.org/Kafka概述 Apache Kafka 是一个开源的分布式事件流…

谷粒商城——通过接口幂等性防止重复提交订单

如果用户向后端服务提交多次相同订单的提交服务&#xff0c;那么后端应该只生成一条订单记录。 有一些操作天然是幂等的&#xff0c;如查询操作和删除操作等。 幂等性实现 1.token机制&#xff08;仅这个方法适用于订单的重复提交&#xff09; 后端先生成1个令牌将其记录在R…

UE4_动画基础_ 瞄准偏移1D(Aim Offset Blend Space 1D)

瞄准偏移1D基本上可以完成角色的向左看向右看或者向上看向下看&#xff0c;像混合空间1D一样只有一个轴向可用。 操作步骤&#xff1a; 1、新建第三人称模板项目。 2、右键——动画——瞄准偏移1D 选取骨骼 双击打开 3、瞄准偏移混合的是姿势&#xff0c;我们需要创建姿势。 …

网络以太网之(1)基础概念

网络以太网之(1)基础概念 Author: Once Day Date: 2024年4月1日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文档可参考专栏&#xff1a;通信网络技术_Once-Day的…

【python plotly库介绍】从视觉到洞见:桑基图在业务分析中的应用【保姆级教程过于详细珍藏版】

&#x1f464;作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 本文结构&#xff1a;工具介绍python实现库 - 案例 - 分析思路与过程 实战专栏&#xff1a;https://blog.csdn.net/cciehl/category_12615648.html 备注说明&#xff1a; 企业…

2.java openCV4.x 入门-hello OpenCV

专栏简介 &#x1f492;个人主页 &#x1f4f0;专栏目录 点击上方查看更多内容 &#x1f4d6;心灵鸡汤&#x1f4d6;我们唯一拥有的就是今天&#xff0c;唯一能把握的也是今天建议把本文当作笔记来看&#xff0c;据说专栏目录里面有相应视频&#x1f92b; &#x1f9ed;文…

Web日志/招聘网站/电商大数据项目样例【实时/离线】

Web服务器日志分析项目 业务分析 业务背景 ​ 某大型电商公司&#xff0c;产生原始数据日志某小时达4千五万条&#xff0c;一天日志量月4亿两千万条。 主机规划 &#xff08;可略&#xff09;日志格式&#xff1a; 2017-06-1900:26:36101.200.190.54 GET /sys/ashx/ConfigH…

【Linux】自定义协议+序列化+反序列化

自定义协议序列化反序列化 1.再谈 "协议"2.Cal TCP服务端2.Cal TCP客户端4.Json 喜欢的点赞&#xff0c;收藏&#xff0c;关注一下把&#xff01; 1.再谈 “协议” 协议是一种 “约定”。在前面我们说过父亲和儿子约定打电话的例子&#xff0c;不过这是感性的认识&a…

Windows提权—数据库提权-mysql提权mssql提权Oracle数据库提权

目录 Windows 提权—数据库提权一、mysql提权1.1 udf提权1.1.2 操作方法一 、MSF自动化--UDF提权--漏洞利用1.1.3 操作方法二、 手工导出sqlmap中的dll1.1.4 操作方法三、 moon.php大马利用 1.2 mof提权1.3 启动项提权1.4 反弹shell 二、MSSQL提权MSSQL提权方法1.使用xp_cmdshe…

【MATLAB源码-第21期】基于matlab的BCH码编码译码仿真,调制使用QPSK,对比编码与未编码的误码率曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 QPSK调制解调&#xff1a;QPSK&#xff08;Quadrature Phase Shift Keying&#xff09;调制解调**是一种数字调制技术&#xff0c;通常用于数字通信系统。 调制&#xff1a; 1. 首先&#xff0c;将数字信号分成两路&#xff…

nodejs基础学习(一)

nodejs逆向python爬虫学习笔记 第一章 nodejs基础 nodejs基础 nodejs逆向python爬虫学习笔记开发环境vscodeF5运行注释js逆向作用变量**1、var全局**2、let块级作用域&#xff1a; {} if while for。。。等等循环中使用3、const 块级作用域&#xff0c;常量,不可以修改/重新定…

MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记

以前微处理器&#xff08;MPU&#xff09;与微控制器&#xff08;MCU&#xff09;是截然不同的两种设备&#xff0c;MPU支持丰富的软件系统&#xff0c;如Linux和相关的软件堆栈&#xff0c;而MCU通常将专注于裸机和RTOS。近年来&#xff0c;随着MCU的性能越来越高&#xff0c;…