2025/3/8 第 27 场 蓝桥入门赛 题解

news2025/4/21 4:39:52

1. 38红包【算法赛】

签到题:  算倍数就行了

#include <bits/stdc++.h>
using namespace std;
int main()
{
  int ans=0;
  for(int i=1;i<=2025;i++){
      if(i % 3 == 0)ans++;
      else if(i % 8 == 0)ans++;
      else if(i % 38 == 0)ans++;
  }
  cout<<ans<<endl;
  return 0;
}

2. 祝福语【算法赛】

字典序: 两个字符串  , 挨个比较字符 , 如果一个字符大则该字符串字典序大  , 如果一个字符串比较完了,则长度长的字典序大。

思路:aaa最小   ,  所以统计连续的最长a字串  , 再多输出1个a(避免是字串)

#include <bits/stdc++.h>
using namespace std;
int main()
{
  // 请在此输入您的代码
  string s;
  cin>>s;

  int n=s.size();
  int num=0;  //连续a最大长度
  int ans=0;
  for(int i=0;i<n;i++){
      if(s[i] == 'a' && i == n-1)
          ans = max(ans , num+1);
      if(s[i] == 'a')num++;
      else 
      {
          ans = max(ans , num);
          num = 0;
      }
  }

    for(int i=0;i<ans+1;i++){
        cout<<'a';
    }
  
  return 0;
}

3. 社区服务【算法赛】

思路  :  前缀数组统计,i左边最近1位置的下标

               后缀数组统计,i右边最近1位置的下标

                再遍历每个点,算最小距离

#include <bits/stdc++.h>
using namespace std;
int main()
{
  // 请在此输入您的代码
  int n;
  cin>>n;

  string s;
  cin>>s;

  vector<int> pre(n,-1);
  int pos=-1;
  for(int i=0;i<n;i++){
      pre[i] = pos;
      if(s[i] == '1'){
          pos = i;
      }
  }

  vector<int> back(n,-1);
  pos=-1;
  for(int i=n-1;i>=0;i--){
      back[i] = pos;
      if(s[i] == '1'){
          pos = i;
      }
  }

//   for(int i=0;i<n;i++){
//       cout<<pre[i]<<" ";
//   }
//   cout<<endl;
//    for(int i=0;i<n;i++){
//       cout<<back[i]<<" ";
//   }

  for(int i=0;i<n;i++){
      if(s[i] == '0'){
          int t1=INT_MAX,t2=INT_MAX;
          if(pre[i] != -1){
              t1 = i - pre[i];
          }
          if(back[i] != -1){
              t2 = back[i] - i;
          }

          if(t1==INT_MAX && t2==INT_MAX)cout<<-1<<" ";
          else
          cout<<min(t1 , t2)<<" ";
      }
  }
  return 0;
}

4. 表演队【算法赛】

思路: 滑动窗口(k个数) , 排序(越靠近越好) , 前缀和用于计算窗口滑动时的值转换

        1.求第一个窗口的值 : 

                a1 a2 a3 a4  (假设k=4)    怎么求两两差值呢?

        规律: a2 - a1        a3 - a1       a4 - a1      a1减3次      a2加1次

                    a3 - a2        a4 - a2                        a2减2次      a3加2次

                    a4 - a3                                            a3减1次      a4加3次

        一个数a[i]        减(后面几个数)个  , 加(前面几个数)个   a[i]

          2.求滑动窗口  看注释

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main()
{
  // 请在此输入您的代码
  int n,k;
  cin>>n>>k;

  vector<ll> a(n+1,0);
  for(int i=1;i<=n;i++){
      cin>>a[i];
  }
  
  //排序
  sort(a.begin()+1,a.end());

  //前缀和
  vector<ll> pre(n+1,0);
  for(int i=1;i<=n;i++){
      pre[i] = pre[i-1] + a[i];
  }

//   for(int i=1;i<=n;i++){
//       cout<<pre[i]<<" ";
//   }

  //滑动窗口

  //第一个窗口值
  ll ans = 0;  //上一个窗口值
  ll res = 0;  //答案

  for(int i=1;i<=k;i++){
      ans +=  (i-1) * a[i] - (k-i) * a[i];
  }
  res = ans;

//   cout<<ans;
  
  /*
        a b c d e
        sum - ((b - a) + (c - a)) + ((d - b) + (d - c));
      == sum  -(b + c) + 2*a +  2*d - (b + c)
      == sum -2*(b+c) + 2*a + 2*d
  */

  for(int i=2;i<=n-k+1;i++){
       ans = ans - 2 * (pre[i+k-2] - pre[i-1]) + (k-1)*a[i-1] + (k-1)*a[i+k-1];
       res = min(ans , res);
  }

  cout<<res<<endl;

  return 0;
}

5. 花束搭配【算法赛】

思路  Ai + Aj > Bi + Bj      ->     Ai - Bi > - (Aj - Bj)

二分查找即可,但要注意以下几点:

sub[i] <= 0      :   不用考虑自己大于 - sub[i]          

sub[i] > 0        :   考虑自己大于 - sub[i]       答案-1

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main() {
    int n;
    cin >> n;

    vector<int> a(n);
    vector<int> b(n);

    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    for (int i = 0; i < n; i++) {
        cin >> b[i];
    }

    vector<int> sub(n);
    for (int i = 0; i < n; i++) {
        sub[i] = a[i] - b[i];
    }

    sort(sub.begin(), sub.end());

    ll ans = 0;
    for (int i = 0; i < n; i++) {
        auto it = upper_bound(sub.begin(), sub.end(), -sub[i]);
        if (it != sub.end()) {
            int pos = it - sub.begin();
            // n - pos 个
            int y = n - pos;
            if (sub[i] > 0) y--;  //换成负的包括正数自己
            ans = ans + y;
        }
    }

    cout << ans << endl;

    return 0;
}

6. 妇女唇膏【算法赛】

思路 : 找二进制都是0的位  , 因为这样  相加  和   异或  该位都一样变成1      

#include <bits/stdc++.h>
using namespace std;

int main()
{
  // 请在此输入您的代码

  int n;
  cin>>n;

  vector<int> nums(n,0);
  for(int i=0;i<n;i++){
      cin>>nums[i];
  }

  vector<bool> flag(32,true);
  for(int i=0;i<n;i++){
      int t=nums[i];
      int pos=0;

      while(t){
          if(t%2 == 1)
            flag[pos] = false;
          t/=2;
          pos++;
      }
  }

  for(int i=0;i<32;i++){
      if(flag[i])
      {
          cout<<(1<<i)<<endl;   //不能pow,pow返回浮点数  , 会有精度问题
          break;
      }
  }


//   for(int i=1;i<=10000;i++){
//       bool flag=true;
//       for(int j=0;j<n;j++){
//           if(nums[j] + i != (nums[j] ^ i)){
//               flag=false;
//               break;
//           }
//       }
//       if(flag ){
//           cout<<i<<endl;
//           break;
//       }
//   }


  return 0;
}

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

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

相关文章

使用Node.js从零搭建DeepSeek本地部署(Express框架、Ollama)

目录 1.安装Node.js和npm2.初始化项目3.安装Ollama4.下载DeepSeek模型5.创建Node.js服务器6.运行服务器7.Web UI对话-Chrome插件-Page Assist 1.安装Node.js和npm 首先确保我们机器上已经安装了Node.js和npm。如果未安装&#xff0c;可以通过以下链接下载并安装适合我们操作系…

deepseek 3FS编译

3FS在ubuntu22.04下的编译&#xff08;记录下编译过程&#xff0c;方便后续使用&#xff09; 环境信息 OS ubuntu 22.04内核版本 6.8.0-52-genericlibfuse 3.16.1rust 1.75.0FoundationDB 7.1.66meson 1.0.0ninja 1.10.1 libfuse编译 以下建议均在root下执行 pip3 install…

每日一练之移除链表元素

题目&#xff1a; 画图解析&#xff1a; 方法&#xff1a;双指针 解答代码&#xff08;注&#xff1a;解答代码带解析&#xff09;&#xff1a; //题目给的结构体 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* }…

力大砖飞,纯暴力搜索——蓝桥p2110(写着玩的)

#include<bits/stdc.h>const int N1000000;using namespace std;bool mp[2][N];int cnt0; int n;void dfs(int row,int col){cntcnt%1000000007;if(coln && row2){cnt;return ;}if(row>2){ //下一列 dfs(0,col1);return;}if(mp[row][col]1){ //下一行 dfs(row…

如何计算两个向量的余弦相似度

参考笔记&#xff1a; https://zhuanlan.zhihu.com/p/677639498 日常学习之&#xff1a;如何计算两个向量或者矩阵的余弦相似度-CSDN博客 1.余弦相似度定理 百度的解释&#xff1a;余弦相似度&#xff0c;又称为余弦相似性&#xff0c;是通过计算两个向量的夹角余弦值来评估…

OkHttp:工作原理 拦截器链深度解析

目录 一、OKHttp 的基本使用 1. 添加依赖 2. 发起 HTTP 请求 3. 拦截器&#xff08;Interceptor&#xff09; 4. 高级配置 二、OKHttp 核心原理 1. 责任链模式&#xff08;Interceptor Chain&#xff09; 2. 连接池&#xff08;ConnectionPool&#xff09; 3. 请求调度…

python: DDD+ORM using oracle 21c

sql script: create table GEOVINDU.School --創建表 ( SchoolId char(5) NOT NULL, -- SchoolName nvarchar2(500) NOT NULL, SchoolTelNo varchar(8) NULL, PRIMARY KEY (SchoolId) --#主鍵 );create table GEOVINDU.Teacher ( TeacherId char(5) NOT NULL , TeacherFirstNa…

基于 LeNet 网络的 MNIST 数据集图像分类

1.LeNet的原始实验数据集MNIST 名称&#xff1a;MNIST手写数字数据集 数据类型&#xff1a;灰度图 &#xff08;一通道&#xff09; 图像大小&#xff1a;28*28 类别数&#xff1a;10类&#xff08;数字0-9&#xff09; 1.通过torchvision.datasets.MNIST下载并保存到本地…

Day4 C语言与画面显示练习

文章目录 1. harib01a例程2. harib01b例程3. harib01e例程4. harib01f例程5. harib01h例程 1. harib01a例程 上一章主要是将画面搞成黑屏&#xff0c;如果期望做点什么图案&#xff0c;只需要再VRAM里写点什么就好了&#xff0c;使用nask汇编语言实现一个函数write_mem8&#…

一周热点-OpenAI 推出了 GPT-4.5,这可能是其最后一个非推理模型

在人工智能领域,大型语言模型一直是研究的热点。OpenAI 的 GPT 系列模型在自然语言处理方面取得了显著成就。GPT-4.5 是 OpenAI 在这一领域的又一力作,它在多个方面进行了升级和优化。 1 新模型的出现 GPT-4.5 目前作为研究预览版发布。与 OpenAI 最近的 o1 和 o3 模型不同,…

《UE5_C++多人TPS完整教程》学习笔记34 ——《P35 网络角色(Network Role)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P35 网络角色&#xff08;Network Role&#xff09;》 的学习笔记&#xff0c;该系列教学视频为计算机工程师、程序员、游戏开发者、作家&#xff08;Engineer, Programmer, Game Developer, Author&#xff09; Stephe…

手写简易Tomcat核心实现:深入理解Servlet容器原理

目录 一、Tomcat概况 1. tomcat全局图 2.项目结构概览 二、实现步骤详解 2.1 基础工具包&#xff08;com.qcby.util&#xff09; 2.1.1 ResponseUtil&#xff1a;HTTP响应生成工具 2.1.2 SearchClassUtil&#xff1a;类扫描工具 2.1.3 WebServlet&#xff1a;自定义注解…

mac本地安装运行Redis-单机

记录一下我以前用的连接服务器的跨平台SSH客户端。 因为还要准备毕设...... 服务器又过期了&#xff0c;只能把redis安装下载到本地了。 目录 1.github下载Redis 2.安装homebrew 3.更新GCC 4.自行安装Redis 5.通过 Homebrew 安装 Redis 安装地址&#xff1a;https://git…

【ThreeJS Basics 09】Debug

文章目录 简介从 dat.GUI 到 lil-gui例子安装 lil-gui 并实例化不同类型的调整改变位置针对非属性的调整复选框颜色 功能/按钮调整几何形状文件夹调整 GUI宽度标题关闭文件夹隐藏按键切换 结论 简介 每一个创意项目的一个基本方面是能够轻松调整。开发人员和参与项目的其他参与…

【笔记】STM32L4系列使用RT-Thread Studio电源管理组件(PM框架)实现低功耗

硬件平台&#xff1a;STM32L431RCT6 RT-Thread版本&#xff1a;4.1.0 目录 一.新建工程 二.配置工程 ​编辑 三.移植pm驱动 四.配置cubeMX 五.修改驱动文件&#xff0c;干掉报错 六.增加用户低功耗逻辑 1.设置唤醒方式 2.设置睡眠时以及唤醒后动作 ​编辑 3.增加测试命…

类和对象:

1. 类的定义&#xff1a; 1. 类定义格式&#xff1a; 对于我们的类的话&#xff0c;我们是把类看成一个整体&#xff0c;我们的函数里面没有找到我们的成员变量&#xff0c;我们就在我们的类里面找。 我们看我们的第二点&#xff1a; 我们的类里面&#xff0c;我们通常会对…

【十三】Golang 通道

&#x1f4a2;欢迎来到张胤尘的开源技术站 &#x1f4a5;开源如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 通道通道声明初始化缓冲机制无缓冲通道代码示例 带…

软考中级_【软件设计师】知识点之【面向对象】

简介&#xff1a; 软件设计师考试中&#xff0c;面向对象模块为核心考点&#xff0c;涵盖类与对象、继承、封装、多态等基础概念&#xff0c;重点考查UML建模&#xff08;类图/时序图/用例图&#xff09;、设计模式&#xff08;如工厂、单例模式&#xff09;及SOLID设计原则。要…

分布式锁—7.Curator的分布式锁一

大纲 1.Curator的可重入锁的源码 2.Curator的非可重入锁的源码 3.Curator的可重入读写锁的源码 4.Curator的MultiLock源码 5.Curator的Semaphore源码 1.Curator的可重入锁的源码 (1)InterProcessMutex获取分布式锁 (2)InterProcessMutex的初始化 (3)InterProcessMutex.…

《UE5_C++多人TPS完整教程》学习笔记35 ——《P36 武器类(Weapon Class)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P36 武器类&#xff08;Weapon Class&#xff09;》 的学习笔记&#xff0c;该系列教学视频为计算机工程师、程序员、游戏开发者、作家&#xff08;Engineer, Programmer, Game Developer, Author&#xff09; Stephen …