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

news2024/10/6 10:56: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.coloradmin.cn/o/2191726.html

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

相关文章

【python实操】python小程序之两数取大值以及login登录

引言 python小程序之两数取大值以及login登录 文章目录 引言一、两数取大值1.1 题目1.2 代码1.3 代码解释 二、login登录2.1 题目2.2 代码2.3 代码解释 三、思考3.1 两数取大值3.2 login登录 一、两数取大值 1.1 题目 定义一个函数my_max&#xff0c;包含两个参数, 函数的作用…

《ASP.NET Web Forms 实现视频点赞功能的完整示例》

在现代Web开发中&#xff0c;实现一个动态的点赞功能是非常常见的需求。本文将详细介绍如何在ASP.NET Web Forms中实现一个视频点赞功能&#xff0c;包括前端页面的展示和后端的处理逻辑。我们将确保点赞数量能够实时更新&#xff0c;而无需刷新整个页面。 技术栈 ASP.NET We…

大厂出来的人为什么不比你高效?

在最近参加的一个线下聚会上&#xff0c;有人问我&#xff1a;“我们单位有来自阿里、腾讯、华为这些大厂的人&#xff0c;为什么我没觉得他们做事比我们这些没大厂经历的人更有章法和效率&#xff1f;”你别说&#xff0c;这一问所反映的现象&#xff0c;与我在阿里巴巴工作时…

10月6日星期日今日早报简报微语报早读

10月6日星期日&#xff0c;农历九月初四&#xff0c;早报#微语早读。 1、国家体育总局&#xff1a;体育不允许成为畸形饭圈文化继续滋生的“温床”&#xff1b; 2、10月起上海适老化改造最高可享补贴三千元&#xff0c;补贴范围扩大&#xff1b; 3、国内航线燃油附加费10月5…

Java版本的SSE服务端实现样例

简单记录一下使用netty方式实现SSE的服务端功能 目录 简要说明基于Netty功能需求后端代码1. 创建一个SpringBoot 应用2. 创建服务端功能3. 创建前端功能4. 测试SSE 总 结 简要说明 Server-Sent Events (SSE) 是一种用于在客户端和服务器之间建立单向通信的技术。 它允许服务器…

【复习】JS中的数据类型

文章目录 数据类型UndefinedNullBooleanNumberStringSymbolBigIntObjectArrayFunctionDateRegExp 数据类型 其实就两种&#xff0c;原始数据类型&#xff08;Primitive Types&#xff09;和引用数据类型&#xff08;Reference Types&#xff09; JS将数据分为七种数据类型&…

降压芯片TPS54821

降压芯片TPS54821 介绍 价格低廉&#xff0c;只需1.5元。是一个同步整流降压BUCK电路。MOS管内置。输入电压为4.5V至17V&#xff0c;输出电压为0.6V到15V&#xff0c;输出电流最大到8A。是QFN封装&#xff0c;焊接时有些许困难。得益于QFN封装&#xff0c;其引线电感非常的小…

振动分析-30-振动信号的幅值概率密度函数CWRU西楚大学轴承数据(实战)

文章目录 1 背景2 幅值概率密度函数3 实现流程3.1 自定义函数3.2 模拟正弦信号4 CWRU轴承数据4.1 加载数据4.2 相同工况不同故障4.3 相同数据不同份数5 参考附录1 背景 很多初学者刚接触故障诊断可能觉得很简单,套用深度学习模型进行训练,分类准确率达到99%即可。 在写论文时…

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

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

Day02-MySQL数据库服务体系结构

Day02-MySQL数据库服务体系结构 1、数据库服务连接管理2、数据库服务应用配置2.1 服务进行配置有什么作用&#xff1f;2.2 应用配置有三种方式&#xff1a; 3、数据库服务多实例构建4、数据库服务版本升级4.1 实现升级的方法&#xff1a;4.2 常见的数据库服务程序升级方式&…

【深入理解SpringCloud微服务】手写实现断路器算法

【深入理解SpringCloud微服务】手写实现断路器算法 断路器状态切换断路器接口断路器算法实现相关属性failed()success()canPass() 断路器状态切换 在分析断路器算法前&#xff0c;我们先复习一下断路器的状态转换。 断路器一般有三个状态&#xff1a;关闭、打开、半开。 断路…

【瑞昱RTL8763E】歌曲传输

1 概要 Watch 端 SD 卡中的歌曲除了可以通过 USB 传输&#xff0c;还可以通过 SPP/BLE 传输来完成歌曲的添加与删 除操作。其中&#xff0c;Android 手机可以安装 LocalPlayback.apk 使用 SPP 协议与 watch 交互&#xff1b;iOS 手机可以安装 LocalPlayback.ipa 通过 BLE 与 wa…

Python 工具库每日推荐 【Matplotlib】

文章目录 引言Python数据可视化库的重要性今日推荐:Matplotlib工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:数据分析可视化案例分析高级特性自定义样式动画效果3D绘图性能优化技巧扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 T…

【可答疑】基于51单片机的无线病床呼叫系统(含仿真、代码、报告、演示视频等)

✨哈喽大家好&#xff0c;这里是每天一杯冰美式oh&#xff0c;985电子本硕&#xff0c;大厂嵌入式在职0.3年&#xff0c;业余时间做做单片机小项目&#xff0c;有需要也可以提供就业指导&#xff08;免费&#xff09;~ &#x1f431;‍&#x1f409;这是51单片机毕业设计100篇…

什么是虚拟化?| 裸机 vs 虚拟机 vs 容器

“云计算&#xff01;DevOps&#xff01;Docker&#xff01;Kubernetes&#xff01;……” 如果您是一名软件工程师&#xff0c;还没有遇到过以上这些流行词&#xff0c;那么您可能一直生活在与世隔绝的地方。 所有这些技术都与同一样东西有关&#xff0c;对&#xff0c;就是…

openEuler 24.03 (LTS) 部署 K8s(v1.31.1) 高可用集群(Kubespray Ansible 方式)

写在前面 实验需要一个 CNI 为 flannel 的 K8s 集群之前有一个 calico 的版本有些旧了,所以国庆部署了一个v1.31.1 版本 3 * master 5 * work时间关系直接用的工具 kubespray博文内容为部署过程以及一些躺坑分享需要科学上网理解不足小伙伴帮忙指正 &#x1f603;,生活加油 99…

IEC104规约的秘密之七----配置参数t1,t2,t3

104通讯前需要配置通讯参数&#xff0c;一般有如下参数&#xff1a; IP地址&#xff0c;端口号&#xff0c;k&#xff0c;w&#xff0c;t1&#xff0c;t2&#xff0c;t3&#xff0c;公共地址&#xff0c;遥控超时参数&#xff0c;104主规约还有一个t0参数。 本次只讲解t1&#…

2-113 基于matlab的图像的配准融合

基于matlab的图像的配准融合&#xff0c;采用互信息配准&#xff0c;PV差值&#xff0c;powell算法&#xff0c;小波变换的图像融合算法。在GUI界面输入两幅图像&#xff0c;完成图像的配准融合。融合图像要求像素 一样。程序代码已经有详细的注释。程序已调通&#xff0c;可直…

对操作系统中的用户态和内核态的理解

目录 引言 为什么要有用户态和内核态&#xff1f;只有一个内核态不行么&#xff1f; 一、用户态&#xff08;User Mode&#xff09; 定义 特点 应用 二、内核态&#xff08;Kernel Mode&#xff09; 定义 特点 应用 三、用户态与内核态的联系和区别 四、用户态和内…

通过dem2terrain生成MapboxGL地形服务

概述 MapboxGL在2的版本之后通过地形服务开始支持三维的展示了&#xff0c;之前也有文章“mapboxGL2中Terrain的离线化应用”对该服务进行过说明与分析。前些天在翻公众号的时候翻到了dem2terrain可以生成地形服务&#xff0c;同时做了一些优化&#xff0c;今天就给大家分享一…