不像人做的题————十四届蓝桥杯省赛真题解析(上)A,B,C,D题解析

题目A:日期统计

在这里插入图片描述
思路分析:
本题的题目比较繁琐,我们采用暴力加DFS剪枝的方式去做,我们在DFS中按照8位日期的每一个位的要求进行初步剪枝找出所有的八位子串,但是还是会存在19月的情况,为此还需要在CHECK函数中进一步剪枝,使得月份天数都符合条件
作者题解:

#include<iostream>
using namespace std;
int a[105], ans;
bool vis[20240000];
bool check(int date)//进一步剪枝,判断日期是否合法
{if (vis[date])return false;vis[date] = 1;//标记是否访问过int mm = date / 100 % 100;//取出月份判断是否合法int dd = date % 100;//取出天数判断是否合法if (mm < 1 || mm > 12)return false;//月份小于1大于12都不合法if (mm == 1 || mm == 3 || mm == 5 || mm == 7 || mm == 8 || mm == 10 || mm == 12){if (1 <= dd && dd <= 31)return true;//大月如果是31天表示合法}else if (mm == 2){if (1 <= dd && dd <= 28)return true;//如果是2月不超过28天表示合法}else if (1 <= dd && dd <= 30)return true;//不是2月也不是大月不超过30天表示合法else return false;
}void dfs(int x, int pos, int date)
{if (x == 100)return;if (pos == 8){if (check(date))++ans;return;}if (pos == 0 && a[x] == 2 ||pos == 1 && a[x] == 0 ||pos == 2 && a[x] == 2 ||pos == 3 && a[x] == 3 ||//剪枝,前四位必须是2023pos == 4 && (0 <= a[x] && a[x] <= 1) || //剪枝,月份第一位不可能超过1pos == 5 && (0 <= a[x] && a[x] <= 9) ||pos == 6 && (0 <= a[x] && a[x] <= 3) ||//日期的第一位不可能超过3pos == 7 && (0 <= a[x] && a[x] <= 9))dfs(x + 1, pos + 1, date * 10 + a[x]);dfs(x + 1, pos, date);//合法才继续往后搜索
}
int main()
{ios::sync_with_stdio,cin.tie(0), cout.tie(0);for (int i = 0; i < 100; i++)cin >> a[i];dfs(0, 0, 0);cout << ans;return 0;
}

运行结果:
在这里插入图片描述
有235个这样的合法子序列

题目B:01串的熵

在这里插入图片描述
思路分析:
这道题我们不要被它的定义吓唬住,仔细分析我们设串中的1的个数为u,串长为N,则v的个数为N-u,我们可以得到如下图的递推公式:

在这里插入图片描述
然后就是由于题中给出的是浮点数,我们要考率精度的问题,误差在给定的范围内即可认为是同一个浮点数,给定的数有几位小数,我们的精度就设为10的几次方

作者题解:

#include<iostream>
using namespace std;
using db = long double;
const int N = 23333333;//定义字符串长度
const db ans = 11625907.5798, eps = 1e-4;//由于题目中的数据是四位小数,所以我们要定义一个误差精度eps,在误差内表示是同一个数
int main()
{for (int v = 0; v <= N / 2; ++v){int u = N - v;db res = -1.0 * u * u / N * log2(1.0 * u / N) - 1.0 * v * v / N * log2(1.0 * v / N);if (fabs(res - ans) < eps){cout << v;return 0;}}return 0;
}

运行结果:
在这里插入图片描述

题目C:冶炼金属

在这里插入图片描述
在这里插入图片描述
思路分析:
在这里插入图片描述
如图所示,我们通过数轴的方式分析,Ai/Vmin=Bi,那么我们如果要找Vmin那么Vmin逐渐增大,对应的Bi会逐渐变小,也就是说,Vmin左侧的Bi应该都比Vmin的Bi大,同理,Vmax右侧的Bi应该都比Vmax的Bi小,所以我们使用两次二分法,二分答案,以Bi的值作为检验函数,就可以求出最大和最小的V
作者题解:

#include<iostream>
using namespace std;
const int MAX_N = 1e4 + 1;
int N, A[MAX_N], B[MAX_N];
int V_min,V_max;
bool check_min(int V)
{for (int i = 1; i <= N; ++i)if (A[i] / V > B[i])return false;//查找最小值时都应该比bi小return true;
}bool check_max(int V)
{for (int i = 1; i <= N; ++i)if (A[i] / V < B[i])return false;//查找最大值时都应该比bi小return true;
}
int main()
{ios::sync_with_stdio, cin.tie(0), cout.tie(0);cin >> N;for (int i = 1; i <= N; i++)cin >> A[i] >> B[i];int L = 1, R = 1e9;while (L <= R){int mid = L + R >> 1;if (check_min(mid)){V_min = mid;R = mid - 1;//查找最小值缩右边界}else L = mid + 1;}L = 1, R = 1e9;while (L <= R){int mid = L + R >> 1;if (check_max(mid)){V_max = mid;L = mid + 1;//查找最大值缩左边界}else R = mid - 1;}cout << V_min << " " << V_max << endl;return 0;
}

运行结果:
在这里插入图片描述
在这里插入图片描述

题目D:飞机降落

在这里插入图片描述
在这里插入图片描述
思路分析:
这道题如果我们直接采用全排列可能会超时,所以我们还是采用DFS剪枝的策略,核心思想在于该架飞机的到达时间加上盘旋时间大于此前所有飞机的降落时间时才可以安全降落,我们采用一个used数组来维护飞机是否可以安全降落,最后递归的出口如果X==N即所有飞机完成降落我们就输出YES
作者题解:

#include<iostream>
using namespace std;
const int MAX_N = 11;
int N, T[MAX_N], D[MAX_N], L[MAX_N];
bool used[MAX_N], have_answer;//use标志飞机是否安全降落
void dfs(int x, int tim) //tim表示此前所有飞机降落所需的单位时间
{if (have_answer)return;if (x == N){have_answer = 1;return;//存在解则退出搜索}for (int i = 1; i <= N; i++){if (!used[i] && tim <= T[i] + D[i]){used[i] = 1;dfs(x + 1, max(T[i], tim) + L[i]);//如果此前所有的飞机的降落时间小于下一架飞机的最早降落时间可以等一等if (have_answer)return;else used[i] = 0;//回溯}}
}void solve()
{have_answer = 0;cin >> N;for (int i = 1; i <= N; ++i){cin >> T[i] >> D[i] >> L[i];used[i] = 0;}dfs(0, 0);if (have_answer)cout << "YES\n";else cout << "NO\n";
}
int main()
{ios::sync_with_stdio, cin.tie(0), cout.tie(0);int t;cin >> t;while (t--)solve();return 0;
}

运行结果:

在这里插入图片描述
在这里插入图片描述
下期预告:E,F,G题解析

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

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

相关文章

【redis】set 类型:基本命令

文章目录 基本概念SADD 和 SMEMBERSSCARDSPOPSRANDMEMBERSMOVESREM集合间操作SINTERSINTERSTORESUNIONSUNIONSTORESDIFFSDIFFSTORE 命令小结内部编码 基本概念 谈到一个属于&#xff0c;这个术语可能有多种含义&#xff0c;set 集合设置&#xff08;和 get 相对应&#xff09…

C 语言进【进阶篇】之动态内存管理:从底层机制到实战优化

目录 &#x1f680;前言&#x1f31f;动态内存分配的必要性&#x1f914;动态内存分配函数深度剖析&#x1f4af;malloc函数&#xff1a;内存申请的主力军&#x1f4af;free函数&#xff1a;释放内存的“清道夫”&#x1f4af;calloc函数&#xff1a;初始化内存的利器&#x1f…

2023华东师范大学计算机复试上机真题

2023华东师范大学计算机复试上机真题 2022华东师范大学计算机复试上机真题 2021华东师范大学计算机复试上机真题 2023华东师范大学计算机复试机试真题 2022华东师范大学计算机复试机试真题 2021华东师范大学计算机复试机试真题 在线评测&#xff1a;传送门&#xff1a;pgcode.…

Mac下安装Zed以及Zed对MCP(模型上下文协议)的支持

Zed是当前新流行的一种编辑器&#xff0c;支持MCP&#xff08;模型上下文协议&#xff09; Mac下安装Zed比较简单&#xff0c;直接有安装包&#xff0c;在这里&#xff1a; brew install --cask zedMac Monterey下是可以安装上的&#xff0c;亲测有效。 配置 使用CtrlShiftP…

Spring Boot 约定大于配置:实现自定义配置

文章目录 Spring Boot 约定大于配置&#xff1a;实现自定义配置引言1. Spring Boot 的约定大于配置2. 自定义配置的需求3. 实现自定义配置的步骤4. 示例&#xff1a;自定义 Spring MVC 配置4.1 创建自定义配置类4.2 创建自定义拦截器4.3 测试自定义配置 5. 其他自定义配置场景5…

交易系统优化方案

证券交易系统优化方案 一、选股策略体系 (一)择时策略矩阵 尾盘集中筛选法(14:30后)聚焦量价异动个股,捕捉次日溢价机会早盘转债套利法(9:25-10:00)通过可转债与正股联动性捕捉日内机会龙头战法(全时段)行业板块强度排序,锁定前三大市值龙头容量资金战法(中盘股适用…

在线Doc/Docx转换为PDF格式 超快速转换的一款办公软件 文档快速转换 在线转换免费转换办公软件

小白工具https://www.xiaobaitool.net/files/word-pdf/提供了一项非常实用的在线服务——将Doc或Docx格式的文档快速转换为PDF格式。这项服务不仅操作简单&#xff0c;而且转换效率高&#xff0c;非常适合需要频繁处理文档转换的用户。 服务特点&#xff1a; 批量转换&#x…

java学习总结(四)MyBatis多表

一、多表结构 学生表、班级表、课程表、班级课程表 二、一对一 一个学生只属于一个班级。 查询&#xff1a;id name age gender banjiName SELECT s.id,s.name,s.age,s.gender,b.id AS banjiId,b.name AS banjiName FROM student AS s INNER JOIN banji AS b ON s.banji_id…

大语言模型学习及复习笔记(1)语言模型的发展历程

1.大模型进入人们视野 ChatGPT 于2022年11月底上线 模型名称 发布时间 核心突破 GPT-3 2020年6月 首款千亿参数模型&#xff0c;少样本学习 GPT-3.5-Turbo 2022年11月 对话能力优化&#xff0c;用户级应用落地 GPT-4 2023年3月 多模态、强逻辑推理 GPT-4o / GPT-4…

【NLP】 3. Distributional Similarity in NLP(分布式相似性)

Distributional Similarity in NLP&#xff08;分布式相似性&#xff09; 分布式相似性&#xff08;Distributional Similarity&#xff09; 是自然语言处理&#xff08;NLP&#xff09;中的核心概念&#xff0c;基于“相似的单词出现在相似的上下文中”这一假设。它用于衡量单…

【C#学习】协程等待

来源GPT&#xff0c;仅记录学习 yield return WaitForEndOfFrame() 适用于 渲染结束后再执行代码&#xff0c;但 WebGL 可能不适合这个操作&#xff0c;会拖慢帧率。(渲染得太慢&#xff09; yield return null; 让代码在下一帧的 Update() 里继续运行&#xff0c;更加流畅。 …

【项目】负载均衡式在线OJ

负载均衡式在线OJ 目录 负载均衡式在线OJ 1.项目介绍&#xff1a; 2.comm 2.1 log.hpp 日志等级 开放式日志 时间戳工具 2.2 util.hpp TimeUtil类 PathUtil类 FileUtil类 StringUtil类 3.Compile_server 3.1compile_run.hpp RemoveTempFile CodeToDesc Start 3.…

实现“XXX一张图“进行环境设施设备可视化管理

实现“电网一张图”、“铁路一张图”、“水库一张图”、“森林一张图”等概念,本质上是将某一领域的空间数据、设施设备、运行状态等信息整合到一个统一的数字化平台上,实现全域可视化、智能化管理和协同运营。这种“一张图”模式依赖于地理信息系统(GIS)、物联网(IoT)、…

《基於Python的网络爬虫抓包技术研究与应用》

## 摘要 本文探讨了基于Python的网络爬虫抓包技术及其应用。随着互联网数据的快速增长&#xff0c;网络爬虫技术在数据采集和分析中扮演着越来越重要的角色。本研究首先介绍了网络爬虫的基本概念和Python在爬虫开发中的优势&#xff0c;然后深入分析了抓包技术的原理和常用工具…

【蓝桥杯速成】| 1.暴力解题

1高频考点与暴力解题_哔哩哔哩_bilibili 感谢up主分享&#xff0c;以下内容是学习笔记&#xff0c;以c为主&#xff0c;部分python 题目一&#xff1a;维纳的年龄 题目内容 美国数学家维纳(N.Wiener)智力早熟&#xff0c; 11岁就上了大学。他曾在1935~1936年应邀来中国清华大…

[C++Qt] 槽函数收不到信号问题(信号的注册)

&#x1f4e2;博客主页&#xff1a;https://loewen.blog.csdn.net&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由 丶布布原创&#xff0c;首发于 CSDN&#xff0c;转载注明出处&#x1f649;&#x1f4e2;现…

从零开始用AI开发游戏(一)

1. 核心玩法设计 核心目标&#xff1a;玩家需在随机生成的3D迷宫中寻找出口&#xff0c;躲避陷阱、收集道具、解开谜题。核心机制&#xff1a; 随机生成迷宫&#xff1a;每次游戏生成不同结构的迷宫&#xff08;递归分割算法或深度优先搜索&#xff09;。第一人称视角&#xf…

基于ssm的宠物医院信息管理系统(全套)

一、系统架构 前端&#xff1a;html | layui | vue | element-ui 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.8 | mysql | maven | tomcat | idea | nodejs 二、代码及数据库 三、功能介绍 01. web端-首页1 02. web端-首页…

【CXX】6.7 SharedPtr<T> — std::shared_ptr<T>

std::shared_ptr 的 Rust 绑定称为 SharedPtr。 限制&#xff1a; SharedPtr 不支持 T 为不透明的 Rust 类型。对于在语言边界上传递不透明 Rust 类型的所有权&#xff0c;应改用 Box&#xff08;C 中的 rust::Box&#xff09;。 示例 // src/main.rsuse std::ops::Deref; …

利用python生成excel中模板范围对应的shape文件

利用python生成excel中模板范围对应的shape文件 # -*- coding: utf-8 -*- import os.pathimport pandas as pd from shapely.geometry import Polygon from shapely.wkt import dumps import argparse# 创建解析器 parser argparse.ArgumentParser(description"这是一个…