[ 蓝桥 ·算法双周赛 ] 第 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;
  else
    return 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 场 小白入门赛

在这里插入图片描述

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习西瓜书笔记(十四) 第十四章概率图模型

第十四章 概率图模型14.1 隐马尔可夫模型14.1.1 小结 14.2 马尔可夫随机场小结 14.3 条件随机场14.3.1 小结 14.4 学习与推断14.4.1 变量消去14.4.2 信念传播小结 14.5 近似推断14.5.1 MCMC采样14.5.2 变分推断小结 14.6 话题模型14.6.1 小结 总结 概率图模型 14.1 隐马尔可夫…

31 基于51单片机的水位监测系统仿真

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;DHT11温湿度检测&#xff0c;水位检测&#xff0c;通过LCD1602显示&#xff0c;超过阈值报警&#xff0c;继电器驱动电机转动。通过矩阵按键切换选择设置各项参数阈值。 …

LabVIEW程序怎么解决 Bug?

在LabVIEW开发过程中&#xff0c;发现和解决程序中的Bug是确保系统稳定运行的关键环节。由于LabVIEW采用图形化编程方式&#xff0c;Bug的排查和处理与传统编程语言略有不同。以下是解决LabVIEW程序中Bug的常见方法和技巧&#xff0c;涵盖从问题发现到解决的多个步骤和角度&…

vue3学习:axios输入城市名称查询该城市天气

说来惭愧&#xff0c;接触前端也有很长一段时间了&#xff0c;最近才学习axios与后端的交互。今天学习了一个查询城市天气的案例&#xff0c;只需输入城市名称&#xff0c;点击“查询”按钮便可以进行查询。运行效果如下&#xff1a; 案例只实现了基本的查询功能&#xff0c;没…

中断系统的原理

一、介绍 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的。中断是指‌CPU在正常运行程序时&#xff0c;由于内部或外部事件的发生&#xff0c;导致CPU中断当前运行的程序&#xff0c;转而去执行其他程序的过程。‌ 中断可以是硬件产生的&#xff0c;也可以是…

【重学 MySQL】四十八、DCL 中的 commit 和 rollback

【重学 MySQL】四十八、DCL 中的 commit 和 rollback commit的定义与作用rollback的定义与作用使用场景相关示例注意事项DDL 和 DML 的说明 在MySQL中&#xff0c;DCL&#xff08;Data Control Language&#xff0c;数据控制语言&#xff09;用于管理数据库用户和控制数据的访问…

集师专属知识付费小程序搭建 心理咨询小程序搭建

一、产品简介 集师SaaS知识付费软件&#xff0c;为知识创业者或商家提供一站式内容交付解决方案&#xff0c;助力商家搭建集品牌传播、商业变现和用户运营于一体的线上知识服务系统&#xff0c;覆盖全渠道经营场景&#xff0c;占据每个流量入口&#xff0c;使流量变现快速高效…

集智书童 | 用于时态动作检测的预测反馈 DETR !

本文来源公众号“集智书童”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;用于时态动作检测的预测反馈 DETR ! 视频中的时间动作检测&#xff08;TAD&#xff09;是现实世界中的一个基本且具有挑战性的任务。得益于 Transformer …

什么是 HTTP Get + Preflight 请求

当在 Chrome 开发者工具的 Network 面板中看到 GET Preflight 的 HTTP 请求方法时&#xff0c;意味着该请求涉及跨域资源共享 (CORS)&#xff0c;并且该请求被预检了。理解这种请求的背景&#xff0c;主要在于 CORS 的工作机制和现代浏览器对安全性的管理。 下面是在 Chrome …

Linux: network: 典型网络延迟图,CPU导致;

接上回说&#xff0c;https://mzhan017.blog.csdn.net/article/details/142689870&#xff1b; 其中在debug的过程中&#xff0c;看到下面这个IO图&#xff0c;这个图比较经典&#xff0c;是一个典型的网络延迟图&#xff0c;可用作为分析问题的一个参考。 如下图&#xff1a;黑…

2024年10月HarmonyOS应用开发者高级认证全新题库

注意事项&#xff1a;切记在考试之外的设备上打开题库进行搜索&#xff0c;防止切屏三次考试自动结束&#xff0c;题目是乱序&#xff0c;每次考试&#xff0c;选项的顺序都不同 新版题库&#xff1a;单选题40题 多选题20题 注意选项答案顺序不一样&#xff0c;大家记得看选项…

Redis篇(缓存机制 - 基本介绍)(持续更新迭代)

目录 一、缓存介绍 二、经典三缓存问题 1. 缓存穿透 1.1. 简介 1.2. 解决方案 1.3. 总结 2. 缓存雪崩 2.1. 简介 2.2. 解决方案 2.3. 总结 3. 缓存击穿 3.1. 简介 3.2. 解决方案 3.3. 总结 4. 经典三缓存问题出现的根本原因 三、常见双缓存方案 1. 缓存预热 1…

第Y2周:训练自己的数据集

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 在上一次体验yolov5s的为基础上&#xff0c;这次将训练自己的数据集。 在YOLO目标检测算法中常用的三种标签格式&#xff1a;voc(xml)、coco(json)和yolo(txt…

安防监控/视频系统EasyCVR视频汇聚平台如何过滤134段的告警通道?

视频汇聚/集中存储EasyCVR安防监控视频系统采用先进的网络传输技术&#xff0c;支持高清视频的接入和传输&#xff0c;能够满足大规模、高并发的远程监控需求。平台支持国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为…

LabVIEW提高开发效率技巧----严格类型化定义

在LabVIEW开发过程中&#xff0c;严格类型化定义&#xff08;Strict Typedefs&#xff09; 是一种工具&#xff0c;用于保证程序中控件和常量的一致性&#xff0c;减少错误&#xff0c;提高维护效率。通过使用严格类型化定义&#xff0c;开发者可以确保在程序的多个地方引用相同…

个人项目简单https服务配置

1.SSL简介 SSL证书是一种数字证书&#xff0c;由受信任的证书颁发机构&#xff08;CA&#xff09;颁发&#xff0c;用于在互联网通信中建立加密链接。SSL代表“安全套接层”&#xff0c;是用于在互联网上创建加密链接的协议。SSL证书的主要目的是确保数据传输的安全性和隐私性…

Windows:win11旗舰版连接无线显示器,连接失败

摘要&#xff1a;win11系统通过 miracast 无线连接到长虹电视的时候&#xff0c;一直连接不上。查看电脑又是支持 miracast 协议&#xff0c;后续发现关闭防火墙即可正常连接。 一、问题现状 最近公司里新换了电视&#xff0c;打算把笔记本电脑投屏到电视上。由于 HDMI 插拔不…

python-pptx 中 placeholder 和 shape 有什么区别?

在 python-pptx 库中&#xff0c;placeholder 和 shape 是两个核心概念。虽然它们看起来相似&#xff0c;但在功能和作用上存在显著的区别。为了更好地理解这两个概念&#xff0c;我们可以通过它们的定义、使用场景以及实际代码示例来剖析其差异。 Python-pptx 的官网链接&…

深入理解Linux内核网络(二):内核与用户进程的协作

内核在协议栈接收处理完输入包以后&#xff0c;要能通知到用户进程&#xff0c;让用户进程能够收到并处理这些数据。进程和内核配合有很多种方案&#xff0c;第一种是同步阻塞的方案&#xff0c;第二种是多路复用方案。本文以epoll为例 部分内容来源于 《深入理解Linux网络》、…

101. 对称二叉树【 力扣(LeetCode) 】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路3.1 递归3.2 迭代 四、参考代码4.1 递归4.2 迭代 零、原题链接 101. 对称二叉树 一、题目描述 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 进阶&#xff1a;你可以运用递归和迭代两种方法解决…