[ 蓝桥 ·算法双周赛 ] 第 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] 📱…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...