[ 蓝桥 ·算法双周赛 ] 第 19 场 小白入门赛

🔥博客介绍`: EvLast
🎥系列专栏: <<数据结构与算法>> << 算法入门>> << C++项目>>
🎥 当前专栏: << 算法入门>>
专题 : 帮助小白快速入门算法竞赛
👍👍👍👍👍👍👍👍👍👍👍👍
☆*: .。. o(≧▽≦)o .。.:*☆
❤️感谢大家点赞👍收藏⭐评论✍️


算法竞赛:第 19 场 小白入门赛
今日学习打卡

- 蓝桥 ·算法双周赛 题解
题解内容:
1. 上交文物
题目考点: 语法

解题思路
解题思路: 根据语言直接输出
注意向下取整
代码
#include <bits/stdc++.h>
using ll = long long;void solve(int T) {std::cout << 5000 / 3 << "\n";
}int main()
{std::ios::sync_with_stdio(0); std::cin.tie(0); std::cout.tie(0);int T; //std::cin >> T;T = 1;for (int i = 1; i <= T; i++) solve(T);return 0;
}
2. 打开石门
题目考点: 字符串 模拟

解题思路

根据方法可知解题
需要选定一个机关字符并合并相同的机关字符由此我们则需遍历字符串 用n记录机关字符为L的值, 用m记录 机关字符为Q的值, 并筛选出最小的即可
代码
#include <bits/stdc++.h>
using ll = long long;void solve(int T) {//输入数据std::string s; std::cin >> s;//存储变量值 n,m 分别记录L, Q的机关字符的值ll n = (ll)s.size() , m = n , ans = n;// 对应循环遍历for(int j = 0; j < (int)s.size() - 1; j++) {//如果有相同者合并if(s[j] == 'L' && s[j + 1] == 'L') {n--;}if(s[j] == 'Q' && s[j + 1] == 'Q') {m--;}}// 筛选出最小值ans = std::min(n, m); std::cout << ans << "\n";
}int main()
{std::ios::sync_with_stdio(0); std::cin.tie(0); std::cout.tie(0);int T = 1; //std::cin >> T;for (int i = 1; i <= T; i++) solve(i);return 0;
}
3. 青铜门上的涂鸦
题目考点: 字符串 模拟

解题思路

此题要点即 判断出四种情况, 然后根据情况, 进行记录值
注意 : QQ因为题目要求不同的数量,将QQ替换成QQ也是一个创作数量
代码
#include <bits/stdc++.h>
using ll = long long;void solve(int T) {std::string s;std::cin>> s;s = "L" + s;int ans = 0;for(int i = 2; i < (int)s.size(); i++) {if(s[i] == 'L') ans++;else if(s[i - 1] == s[i - 2] && s[i - 1] == 'L') ans++;}if(s.find("QQ") != std::string::npos) ans++;std::cout << ans << "\n";
}int main()
{std::ios::sync_with_stdio(0); std::cin.tie(0); std::cout.tie(0);int T = 1; //std::cin >> T;for (int i = 1; i <= T; i++) solve(i);return 0;
}
纯暴力 30% 代码
#include <bits/stdc++.h>
using ll = long long;void solve(int T) {std::string s; std::cin >> s;int ans = 0; std::unordered_map<std::string, int> mp;for(int j = 0; j < (int)s.size() - 1; j++) {std::string t(s);t[j] = 'Q';t[j + 1] = 'Q';mp[t]++;}std::cout << mp.size() << "\n";
}int main()
{std::ios::sync_with_stdio(0); std::cin.tie(0); std::cout.tie(0);int T; //std::cin >> T;T = 1;for (int i = 1; i <= T; i++) solve(i);return 0;
}
4. 敲打骷髅兵
题目考点: 模拟 数学

解题思路
这题比上一题更简单, 敲打一个骷髅并骷髅兵的数量会成倍增加, 指数级增加直到 血条 n 为 0为止, 因为向下取整所以当 n == 1时候即最后一次 。
代码
#include <bits/stdc++.h>
using ll = long long;void solve(int T) {int n,cnt=0;std::cin>>n;while(n) n/=2,cnt++;std::cout << (long long) std::pow(2,cnt) - 1 << "\n";
}int main()
{std::ios::sync_with_stdio(0); std::cin.tie(0); std::cout.tie(0);int T; std::cin >> T;for (int i = 1; i <= T; i++) solve(i);return 0;
}
5. 净化王胖子
题目考点: 模拟 数学

解题思路
根据题目要求从最暴力的方式入手建立起模型, 使用差分的方法
代码
#include <bits/stdc++.h>
using ll = long long;int a[200005], b[200005];void solve(int T) {int n, k, x, sum = 0, t;std::cin >> n>>k;for (int i=1; i<=n; i++) std::cin>>x, a[x] = i;for (int i=1; i<=n-1; i++) b[std::min(a[i],a[i+1])]++, b[std::max(a[i],a[i+1])]--;for (int i=1; i<=n-1; i++)t = b[i], b[i] += sum, sum += t;std::sort(b+1, b+1+n-1, std::greater<int>());sum = 0;for (int i=1; i<=n-1; i++) {sum += b[i];if (sum >= k) {std::cout<<i<<'\n';return ;}}std::cout<<-1<<'\n';
}int main()
{std::ios::sync_with_stdio(0); std::cin.tie(0); std::cout.tie(0);int T = 1; //std::cin >> T;for (int i = 1; i <= T; i++) solve(i);return 0;
}
6. 云顶天宫
题目考点: 思维 动态规划

解题思路
此题根据题解可知需要使用组合数学与dp
参考代码
#include <iostream>
using namespace std;
const int M = 998244353;
const int N = 1005;
// 线性求逆元 求阶乘逆元
long long f[N], inv[N], finv[N];void init(int n) {f[0] = f[1] = inv[0] = inv[1] = finv[0] = finv[1] = 1;for (int i=2; i<=n; i++) {f[i] = f[i-1] * i % M;inv[i] = (M - M/i) * inv[M%i] % M;finv[i] = finv[i-1] * inv[i] % M;}
}
// 求组合数逆元
long long C(int n, int m) {if (m > n)return 0;if (m == 0 || m == n)return 1;return f[n] * finv[m]%M * finv[n-m]%M;
}long long pow(long long a, int k) {if (k == 0)return 1;if (k%2)return pow(a*a%M, k/2)*a%M;elsereturn pow(a*a%M, k/2);
}int main() {int n,m;cin>>n>>m;init(n);long long ans = 0;for (int i=1; i<=(n+1)/2; i++)ans += C(n+1-i, i)*pow(m-1, n-i)%M;cout<<ans%M<<'\n';return 0;
}/*
C(n,1)*(m-1)^(n-1) +
C(n-1,2)*(m-1)^(n-2) +
...
C(n+1-(n+1)/2,(n+1)/2)*(m-1)^(n-(n+1)/2)4*(4**3)+3*(4**2)*/
个人总结:
感觉这次比赛给我带来很大帮助, 通过本场竞赛复习的字符串的相关操作, 模拟的基础思维, 第三题确实给我带来很多惊喜, 从暴力超内存,到思维上的提升帮助巨大,后面补题的过程在知识上也给我带来提高, 本次双周赛对我来说起到了一个查缺补漏的作用,在我参加算法竞赛的道路,这无疑是一次难得的良机。
补题单 : 第 19 场 小白入门赛

- 上交文物
- 打开石门
- 青铜门上的涂鸦
- 敲打骷髅兵
- 净化王胖子
- 云顶天宫

相关文章:
[ 蓝桥 ·算法双周赛 ] 第 19 场 小白入门赛
🔥博客介绍: EvLast 🎥系列专栏: <<数据结构与算法>> << 算法入门>> << C项目>> 🎥 当前专栏: << 算法入门>> 专题 : 帮助小白快速入门算法竞赛 👍…...
HTML+CSS基础 第二季课堂笔记
一、列表 列表都不是单打独斗的,通常都是一组标签组成 1 无序列表 作用:定义一个没有顺序的列表结构 由两个标签组成,ul(容器级标签),li(容器级) ul:英文ulordered …...
【Easy RL】Easy RL蘑菇书全书学习笔记
【Easy RL】Easy RL蘑菇书全书学习笔记 第一章 强化学习基础1.1 强化学习概述监督学习强化学习与监督学习的不同之处二者的区别总结强化学习的特征强化学习的优越性预演(rollout)和 轨迹(trajectory)的概念端到端的概念深度强化学…...
JavaWeb(二)
Servlet开发技术 [外链图片转存中…(img-Cnu8X2V4-1728026684827)] 简述Servlet的创建过程? package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; …...
【C++】--类和对象(2)
👌个人主页: 起名字真南 👆个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 类的默认成员函数2 构造函数3 析构函数4 拷贝构造5 赋值运算符重载5.1 运算符重载5.2 赋值运算符的重载 1 类的默认成员函数 默认成员函数就是用户没有显示实现,…...
最新BurpSuite2024.9专业中英文开箱即用版下载
1、工具介绍 本版本更新介绍 此版本对 Burp Intruder 进行了重大改进,包括自定义 Bambda HTTP 匹配和替换规则以及对扫描 SOAP 端点的支持。我们还进行了其他改进和错误修复。 Burp Intruder 的精简布局我们对 Burp Intruder 进行了重大升级。现在,您可…...
C++ 观察者模式
观察者模式(Observer Pattern)是一种行为设计模式,用于在对象之间建立一对多的依赖关系,当一个对象的状态发生变化时,它的所有依赖对象都会得到通知并自动更新。 在观察者模式中,主题和观察者之间是松耦合…...
基于pytorch的手写数字识别-训练+使用
import pandas as pd import numpy as np import torch import matplotlib import matplotlib.pyplot as plt from torch.utils.data import TensorDataset, DataLoadermatplotlib.use(tkAgg)# 设置图形配置 config {"font.family": serif,"mathtext.fontset&q…...
SpringBoot接收前端传递参数
1)URL 参数 参数直接 拼接在URL的后面,使用 ? 进行分隔,多个参数之间用 & 符号分隔。例如:http://localhost:8080/user?namezhangsan&id1后端接收(在Controller方法的参数列表中使用 RequestParam 注解&…...
【LeetCode周赛】第 418 场
3309. 连接二进制表示可形成的最大数值 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接 数组 nums 中所有元素的 二进制表示 ,请你返回可以由这种方法形成的 最大 数值。 注意 任何数字的二进制表示 不含 前导零 思路:暴力枚举 class Soluti…...
Android学习7 -- NDK2 -- 几个例子
学习 Android 的 NDK(Native Development Kit)可以帮助你用 C/C 来开发高性能的 Android 应用,特别适合对性能要求较高的任务,如音视频处理、游戏开发和硬件驱动等。下面是学习 NDK 的建议步骤和具体例子: ### 1. **准…...
问:说说JVM不同版本的变化和差异?
在Java程序的执行过程中,Java虚拟机(JVM)扮演着至关重要的角色。它不仅负责解释和执行Java字节码,还管理着程序运行时的内存。根据JVM规范,JVM将其所管理的内存划分为多个不同的数据区域,包括程序计数器、J…...
计算机毕业设计 基于Python的社交音乐分享平台的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...
51单片机的水位检测系统【proteus仿真+程序+报告+原理图+演示视频】
1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块水位传感器继电器LED、按键和蜂鸣器等模块构成。适用于水位监测、水位控制、水位检测相似项目。 可实现功能: 1、LCD1602实时显示水位高度 2、水位传感器采集水位高度 3、按键可设置水位的下限 4、按键可手动加…...
Python和R及Julia妊娠相关疾病生物剖析算法
🎯要点 算法使用了矢量投影、现代优化线性代数、空间分区技术和大数据编程利用相应向量空间中标量积和欧几里得距离的紧密关系来计算使用妊娠相关疾病(先兆子痫)、健康妊娠和癌症测试算法模型使用相关性投影利用相关性和欧几里得距离之间的关…...
Web安全 - 重放攻击(Replay Attack)
文章目录 OWASP 2023 TOP 10导图1. 概述2. 重放攻击的原理攻击步骤 3. 常见的重放攻击场景4. 防御重放攻击的技术措施4.1 使用时效性验证(Time-Based Tokens)4.2 单次令牌机制(Nonce)4.3 TLS/SSL 协议4.4 HMAC(哈希消息…...
Python项目文档生成常用工具对比
写在前面: 通过阅读本片文章,你将了解:主流的Python项目文档生成工具(Sphinx,MkDocs,pydoc,Pdoc)简介及对比,本文档不涉及相关工具的使用。 概述 近期,由于…...
教育领域的技术突破:SpringBoot系统实现
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
RabbitMQ入门3—virtual host参数详解
在 RabbitMQ 中,创建 Virtual Host 时会涉及到一些参数配置,比如 tags 和 Default Queue Type。下面是对这两个参数的详细解释: 1. Tags Tags 是 Virtual Host 的标记,用来为 Virtual Host 添加元数据,帮助你管理和组…...
【Nacos入门到实战十四】Nacos配置管理:集群部署与高可用策略
个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] 📱…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
