(2023码蹄杯)省赛(初赛)第二场真题(原题)(题解+AC代码)

news2024/9/22 5:27:14

题目1:MC0214捡麦子

码题集OJ-捡麦子 (matiji.net)

思路:

1.第n米在前n-1米的基础上多加一个n个麦子,那么直接从1开始枚举,累加答案即可

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n;  cin>>n;
    
    int ans=0,sum=0;
    for(int i=1;i<=n;i++){
        sum+=i;
        ans+=sum;
    }
    cout<<ans;
    return 0;
}

题目2:MC0215小码哥玩游戏

码题集OJ-小码哥玩游戏 (matiji.net)

思路:

简述题意:统计给定字符的相邻字符的数量,注意结果要去重

1.可以将给定字符的四个相邻字符,放到set中,最后直接输出set大小

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;
int const N=107;

int n,m;
char ch;
char str[N][N];
int dx[]={-1,1,0,0},dy[]={0,0,-1,1};

int main( )
{
    cin>>n>>m>>ch;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++)   cin>>str[i][j];
    }

    set<char>s;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(str[i][j]!=ch)  continue;    //不是指定字符
            for(int k=0;k<4;k++){
                int x=dx[k]+i,y=dy[k]+j;
                if(x<1||y<1||x>n||y>m)  continue;
                if(str[x][y]=='0'||str[x][y]==ch)    continue;  //0是无字符,且不能与指定字符一致
                s.insert(str[x][y]);
            }
        }
    }

    cout<<s.size(); //直接输出set大小
    return 0;
}

题目3:MC0216淘金者

码题集OJ-淘金者 (matiji.net)

思路:

1.查找第一个给定字符,找到直接输出其下标+1,遍历完都没有找到输出-1

AC_Code:C++ 

#include<bits/stdc++.h> 

using namespace std;

string s;
char target;

int main( )
{
    cin>>s>>target;

    for(int i=0;i<s.size();i++){
        if(s[i]==target){
            cout<<i+1;
            return 0;
        }
    }
    cout<<-1;
    return 0;
}

题目4:MC0217自动浇花机

码题集OJ-自动浇花机 (matiji.net)

思路:

1.左边的喷头的浇花的速度是右侧的两倍,那么相当于右侧的喷头浇花花费时间是左边的两倍

2.那么可以枚举分割点,左侧左喷头浇,右侧右喷头浇,满足左侧花费的时间<=右侧花费时间的两倍,分割点++

3.计算左右两侧的花费时间可以用前缀和优化

AC_Code:C++ 

#include<bits/stdc++.h> 

using namespace std;
int const N=1e3+7;

int a[N],pre[N];
int n;

int main( )
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",a+i);
        pre[i]=pre[i-1]+a[i];
    }

    //枚举分割点
    int idx=1;
    while(pre[idx]<=(pre[n]-pre[idx+1])*2)  idx++;
    cout<<idx<<endl;
    return 0;
}

题目5:MC0218小码哥的开心数字

码题集OJ-小码哥的开心数字 (matiji.net)

思路:

1.反转之后比较大小即可,

2.怎么反转呢?假设a=123,b=0,b为反转后的数字,每次令b=b*10+a%10,最后就可以得到a反转后的数b

AC_Code:C++ 

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int a;  cin>>a;
    int temp=a,b=0; //b为反转后的数
    while(temp){
        b=b*10+temp%10;
        temp/=10;
    }
    cout<<b<<endl;  
    
    if(b<a)   puts("False");    //反转过后的数小于反转前的数
    else puts("True");
    return 0;
}

题目6:MC0219自驾游

码题集OJ-自驾游 (matiji.net)

思路:bfs

1.以路程0为起点,加油站的距离与money为限制,跑一个最短路,这里可以直接跑bfs

2.跑bfs时,要记录上一个加油站的下标索引,加快bfs的效率

AC_Code:C++ 

#include<bits/stdc++.h> 

using namespace std;
typedef pair<int,int>PII;
#define x first
#define y second
int const N=2007;

PII a[N];
int n,l,mx,s;
struct Node{
    int dist,money,idx;
};

bool bfs(){
    queue<Node>q;   q.push({0,s,-1});

    while(q.size()){
        Node t=q.front();    q.pop();
        
        if(t.dist+mx>=l)    return true;    //总行程已达L 

        //这里记录了上一次加油的下标
        for(int i=t.idx+1;i<n;i++){
            if(a[i].x>t.dist+mx)    break;  //距离太远,无法到达
            if(a[i].y>t.money)  continue;   //钱不够加油
            q.push({a[i].x,t.money-a[i].y,i});
        }
    }

    return false;   //总行程无法达到达L 
}

int main( )
{
    while(cin>>n>>l>>mx>>s){
        for(int i=0;i<n;i++)    cin>>a[i].x>>a[i].y;
        sort(a,a+n);    //对距离升序排列

        if(bfs())   puts("Yes");
        else puts("No");
    }
    return 0;
}

题目7:MC0220买月饼

码题集OJ-买月饼 (matiji.net)

思路:

1.枚举买月饼的个数,对总费用分情况讨论,总费用小于10元,只有代金券面额刚好等于总费用符合条件

2.总费用大于10元时,总费用刚好为10的倍数,或者个位数刚好等于代金券的面额,就满足条件

AC_Code:C++ 

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int m,n;    cin>>m>>n;
    for(int i=1;;i++){
        int money=i*m;
        if(money<10){   //总费用小于10元
            if(n==money){
                cout<<i;
                return 0;
            }
        }
        else{ //总费用大于等于10元
            if(money%10==0||money%10==n){
                cout<<i;
                return  0;
            }
        }
    }
    return 0;
}

题目8:MC0221未来战争

码题集OJ-未来战争 (matiji.net)

思路:

1.用差分对充能段标记为1,同时记录充能起点和终点

2.最后统计充能段的最大值,与非充能段的最大值,

3.最后充能段要记得减一,非充能段要加一,因为算的是区间

AC_Code:C++ 

#include<bits/stdc++.h> 

using namespace std;
int const N=1e6+7;

int n;
int diff[N];

int main( )
{
    scanf("%d",&n);
    int start=1e6+7,target=-1;  //记录起点与终点
    for(int i=0;i<n;i++){
        int l,r;    scanf("%d%d",&l,&r);
        start=min(start,l);
        target=max(target,r);
        diff[l]++,  diff[r+1]--;    //差分
    }

    for(int i=1;i<N;i++)    diff[i]+=diff[i-1]; //前缀和
    int ans1=0,ans2=0;
    int a=0,b=0;
    for(int i=start;i<=target;i++){
        if(diff[i]) a++,b=0;
        else b++,a=0;
        ans1=max(ans1,a);
        ans2=max(ans2,b);
    }

    //算的区间长度,所以要减一,加一操作
    cout<<ans1-1<<" "<<(ans2==0?0:ans2+1)<<endl;

    return 0;
}

题目9:MC0222文章压缩

码题集OJ-文章压缩 (matiji.net)

思路:

1.对每个单词,记录它在第几次出现过

2.最后按要求输出即可

AC_Code:C++ 

#include<bits/stdc++.h> 

using namespace std;
int const N=1e3+7;

string str[N];
int n;
unordered_map<string,vector<int>>idx;   //记录单词出现的位置

int main( )
{
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>str[i];
        idx[str[i]].push_back(i);
    }

    unordered_set<string>vis;   //标记是否输出过单词
    for(int i=1;i<=n;i++){
        if(vis.count(str[i]))   continue;   //输出过了
        vis.insert(str[i]);

        vector<int>y=idx[str[i]];
        cout<<str[i]<<"("<<y[0];
        for(int j=1;j<y.size();j++) cout<<","<<y[j];
        cout<<")";
    }

    return 0;
}

题目10:MC0223魔法水晶球

码题集OJ-魔法水晶球 (matiji.net)

思路:

1.先检查是否为质数,在判断奇偶数

AC_Code:C++ 

#include<bits/stdc++.h> 

using namespace std;

bool check(int n){
    for(int i=2;i<=n/i;i++)
        if(n%i==0)  return false;
    return true;
}

int main( )
{
    int n;  cin>>n;
    if(check(n))    puts("P");
    else if(n%2)    puts("O");
    else puts("E");
    return 0;
}

题目11:MC0224手机测试

码题集OJ-手机测试 (matiji.net)

思路:

1.按要求模拟,但是要注意t1时间段也算是性能模式,还有就是注意计算的是时间段

AC_Code:C++ 

#include<bits/stdc++.h> 

using namespace std;

int a,m,n,k,t1,t2;

int main( )
{
    cin>>a>>m>>n>>k>>t1>>t2;

    int ans=0;
    int pre_r=-1;   //记录前一段的结束时间
    for(int i=0;i<a;i++){
        int l,r;    cin>>l>>r;
        ans+=(r-l)*m;   //性能模式
        if(pre_r!=-1){
            int len=l-pre_r;    

            //性能模式
            if(len>=t1){
                len-=t1;
                ans+=t1*m;
            }
            else{
                ans+=len*m; pre_r=r; continue;
            }

            //正常模式
            if(len>=t2){
                len-=t2;
                ans+=t2*n;
            }
            else{
                ans+=len*n; pre_r=r; continue;
            }

            //省电模式
            ans+=k*len;
        }
        pre_r=r;
    }
    cout<<ans;
    return 0;
}

题目12:MC0225银河贸易市场

题解:MC0225银河贸易市场(码蹄杯)-CSDN博客

题目13:MC0226双人成行

思路:

1.把小马哥,小马弟做的题目放到一个集合中,看是否等于n

AC_Code:C++

#include<bits/stdc++.h> 

using namespace std;

int n,m;
set<int>s;

void get(){
    cin>>m;
    for(int i=0;i<m;i++){
        int t;  scanf("%d",&t);
        s.insert(t);
    }
}

int main( )
{
    cin>>n;
    get();  //小马哥的题
    get();  //小马弟的题
    
    if(s.size()==n) puts("It Takes Two.");
    else puts("Maybe Next Time.");
    return 0;
}

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

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

相关文章

ES6 — ES14 新特性

一、ES6 新特性&#xff08;2015&#xff09; 1. let和const 在ES6中&#xff0c;新增了let和const关键字&#xff0c;其中 let 主要用来声明变量&#xff0c;而 const 通常用来声明常量。let、const相对于var关键字有以下特点&#xff1a; 特性varletconst变量提升✔️全局…

NX二次开发UF_CAM_update_list_object_customization 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_update_list_object_customization Defined in: uf_cam.h int UF_CAM_update_list_object_customization(tag_t * object_tags ) overview 概述 This function provids the…

Elasticsearch:ES|QL 函数及操作符

如果你对 ES|QL 还不是很熟悉的话&#xff0c;请阅读之前的文章 “Elasticsearch&#xff1a;ES|QL 查询语言简介​​​​​​​”。ES|QL 提供了一整套用于处理数据的函数和运算符。 功能分为以下几类&#xff1a; 目录 ES|QL 聚合函数 AVG COUNT COUNT_DISTINCT 计数为近…

web:[WUSTCTF2020]朴实无华

题目 点开页面显示如下 页面显示了一行报错&#xff1a;Cannot modify header information - headers already sent by (output started at /var/www/html/index.php:3) in /var/www/html/index.php on line 4 意思为不能修改报头信息-报头已经发送(输出开始于/var/www/html/i…

Ubuntu20.04 install pnpm

npm install -g pnpm referrence link: Installation | pnpmPrerequisiteshttps://pnpm.io/installation

嵌入式系统在工业自动化中的应用

嵌入式系统在工业自动化中的应用非常广泛&#xff0c;它们通过集成控制和实时响应能力&#xff0c;实现了生产线的自动化、智能化和高效化。以下将详细介绍嵌入式系统在工业自动化中的几个重要应用领域&#xff0c;并提供一些示例代码。 1. PLC&#xff08;可编程逻辑控制器&a…

Maven 简单配置阿里云镜像

配置步骤&#xff1a; 1、找到 maven 的安装目录&#xff0c;修改settings.xml 2、在文件中找到<mirrors>标签&#xff0c;然后再标签中添加阿里云配置即可 <mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共…

FFmpeg常用命令讲解及实战二

文章目录 前言一、ffmpeg 常用命令1、ffmpeg 的封装转换2、ffmpeg 的编转码3、ffmpeg 的基本编转码原理 二、ffprobe 常用参数1、show_format2、show_frames3、show_streams4、print_format5、select_streams 三、ffplay 的常用命令1、ffplay 常用参数2、ffplay 高级参数3、ffp…

ARCore:在Android上构建令人惊叹的增强现实体验

ARCore&#xff1a;在Android上构建令人惊叹的增强现实体验 一、 AR 介绍1.1 AR技术简介1.2 AR技术原理1.3 AR技术应用领域 二、Google的增强现实平台ARCore2.1 ARCore简介2.2 ARCore API介绍2.3 ARCore API使用示例 三、总结 一、 AR 介绍 增强现实 Augmented Reality&#x…

python中一个文件(A.py)怎么调用另一个文件(B.py)中定义的类AA详解和示例

本文主要讲解python文件中怎么调用另外一个py文件中定义的类&#xff0c;将通过代码和示例解读&#xff0c;帮助大家理解和使用。 目录 代码B.pyA.py 调用过程 代码 B.py 如在文件B.py,定义了类别Bottleneck&#xff0c;其包含卷积层、正则化和激活函数层&#xff0c;主要对…

【OpenCV实现图像:可视化目标检测框】

文章目录 概要画框函数代码实现标签美化角点美化透明效果小结 概要 目标检测框的可视化在计算机视觉和机器学习领域中是一项重要的任务&#xff0c;有助于直观地理解和评估目标检测算法的性能。通过使用Python和相关的图像处理库&#xff0c;可以轻松实现目标检测框的可视化。…

图神经网络的数学原理总结

图深度学习(Graph Deep Learning) 多年来一直在加速发展。许多现实生活问题使GDL成为万能工具&#xff1a;在社交媒体、药物发现、芯片植入、预测、生物信息学等方面都显示出了很大的前景。 本文将流行的图神经网络及其数学细微差别的进行详细的梳理和解释&#xff0c;图深度学…

docker国内镜像加速

创建或修改 /etc/docker/daemon.json 文件&#xff0c;修改为如下形式 {"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"] } Docker中国区官方镜像htt…

OpenWRT软路由web界面如何远程访问

文章目录 1.openWRT安装cpolar2.配置远程访问地址3.固定公网地址 简单几步实现在公网环境下远程访问openWRT web 管理界面&#xff0c;使用cpolar内网穿透创建安全隧道映射openWRT web 界面面板443端口&#xff0c;无需公网IP&#xff0c;无需设置路由器。 1.openWRT安装cpola…

redis运维(十七)事务

一 redis事务 事务核心参考 ① 基础概念 1、场景引入核心&#xff1a;通过现象思考原因? 2、事务的概念 3、事务四大特性说明&#xff1a; redis只具备部分特性 重点1&#xff1a; 原子性和一致性 重点2&#xff1a; 隔离性和持久性 ② redis的事务 1、基础铺垫备注&…

关于easy-es的聚合问题

es实体类&#xff1a; public class ChemicalES {IndexId(type IdType.CUSTOMIZE)private Long id;HighLightIndexField(fieldType FieldType.TEXT, analyzer "ik_max_word")private String name;IndexField(fieldType FieldType.KEYWORD)private List<Stri…

uni-app 跨端开发注意事项

文章目录 前言H5正常但App异常的可能性标题二H5正常但小程序异常的可能性小程序正常但App异常的可能性小程序或App正常&#xff0c;但H5异常的可能性App正常&#xff0c;小程序、H5异常的可能性使用 Vue.js 的注意区别于传统 web 开发的注意H5 开发注意微信小程序开发注意支付宝…

【JavaSE】基础笔记 - 异常(Exception)

目录 1、异常的概念和体系结构 1.1、异常的概念 1.2、 异常的体系结构 1.3 异常的分类 2、异常的处理 2.1、防御式编程 2.2、异常的抛出 2.3、异常的捕获 2.3.1、异常声明throws 2.3.2、try-catch捕获并处理 3、自定义异常类 1、异常的概念和体系结构 1.1、异常的…

vue一个页面左边是el-table表格 当点击每条数据时可以在右边界面编辑表格参数,右边保存更新左边表格数据

实现思路&#xff1a; 1.点击当前行通过row拿到当前行数据。 2.将当前行数据传给子组件。 3.子组件监听父组件传过来的数据并映射在界面。 4.点击保存将修改的值传给父组件更新表格。 5.父组件收到修改过后的值&#xff0c;可以通过字段判断比如id&#xff0c;通过 findIn…

81基于matlab GUI的图像处理

基于matlab GUI的图像处理&#xff0c;功能包括图像颜色处理&#xff08;灰度图像、二值图像、反色变换、直方图、拉伸变换&#xff09;&#xff1b;像素操作&#xff08;读取像素、修改像素&#xff09;、平滑滤波&#xff08;均值平滑、高斯平滑、中值平滑&#xff09;、图像…