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

题目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;
}

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

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

相关文章

计算机组成原理-固态硬盘SSD

文章目录 总览机械硬盘vs固态硬盘固态硬盘的结构固态硬盘与机械硬盘相比的特点磨损均衡技术例题 总览 机械硬盘vs固态硬盘 固态硬盘采用闪存技术&#xff0c;是电可擦除ROM 下图右边黑色的块块就是一块一块的闪存芯片 固态硬盘的结构 块大小16KB~512KB 页大小512B~4KB 对固…

数据库的事务的基本特性,事务的隔离级别,事务隔离级别如何在java代码中使用,使用MySQL数据库演示不同隔离级别下的并发问题

文章目录 数据库的事务的基本特性事务的四大特性(ACID)4.1、原子性&#xff08;Atomicity&#xff09;4.2、一致性&#xff08;Consistency&#xff09;4.3、隔离性&#xff08;Isolation&#xff09;4.4、持久性&#xff08;Durability&#xff09; 事务的隔离级别5.1、事务不…

电源控制系统架构(PCSA)之系统控制处理器组件

目录 6.4 系统控制处理器 6.4.1 SCP组件 SCP处理器Core SCP处理器Core选择 SCP处理器核内存 系统计数器和通用计时器 看门狗 电压调节器控制 时钟控制 系统控制 信息接口 电源策略单元 传感器控制 外设访问 系统访问 6.4 系统控制处理器 系统控制处理器(SCP)是…

Ubuntu系统安装docker

1.检查是否安装老版本 检查卸载老版本docker ubuntu下自带了docker的库&#xff0c;不需要添加新的源。 但是ubuntu自带的docker版本太低&#xff0c;需要先卸载旧的再安装新的。 apt-get remove docker docker-engine docker.io containerd runc 如果不能正常卸载&#x…

VINS-MONO代码解读----vins_estimator(鲁棒初始化部分)

0. 前言 整个初始化部分的pipeline如下所示&#xff0c;参照之前的博客&#xff0c;接下来根据代码一步步讲解。 1. 旋转约束标定旋转外参Rbc 上回讲了processImage中addFeatureCheckParallax完成了对KF的筛选&#xff0c;我们知道了2nd是否为KF&#xff0c;接下来是初始化…

redis的数据类型的操作增删改查

redis的数据类型的操作增删改查 redis的高可用&#xff1a; 在集群当中有一个非常重要的指标&#xff0c;提供正常服务的时间的百分比&#xff08;365天&#xff09;99.9% redis的高可用的含义要更加宽泛&#xff0c;正常服务是指标之一数据容量扩展&#xff0c;数据的安全性…

开源的文本编辑器Notepad++ 8.6.0版本在Windows系统上的下载与安装配置

目录 前言一、Notepad 安装二、使用配置总结 前言 Notepad 是一款简单而强大的文本编辑工具&#xff0c;通常用于快速创建和编辑文本文件。以下是 Notepad 工具的详细介绍。注&#xff1a;文末附有下载链接&#xff01; 主要特点&#xff1a; ——简洁易用&#xff1a; Note…

matlab画双坐标图的样式

matlab画双坐标图的样式 %% clc,clear,close all; t0:0.1:9*pi; figure; [AX,Ha,Hb]plotyy(t,sin(t),t,exp(t)); % 绘图并创建句柄 % ----------------- 设置刻度 set(AX(1),yTick,[-1.250:0.25:1.25]) % 设置左边Y轴的刻度 set(AX(2),yTick,[0:50:350]) …

vue005——vue组件入门(非单文件组件和单文件组件)

一、非单文件组件 1.1、单文件组件的使用 1.1.1、局部注册 1、第一步&#xff1a;创建school组件 2、第二步&#xff1a;注册组件&#xff08;局部注册&#xff09; 3、第三步&#xff1a;使用组件&#xff08;编写组件标签&#xff09; <!DOCTYPE html> <html>…

【MySQL】数据库基础操作

&#x1f451;专栏内容&#xff1a;MySQL⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、数据库操作1、创建数据库2、查看所有数据库3、选定指定数据库4、删除数据库 二、数据表操作1、创建数据表2、查看所有表3、…

debian 设置系统默认以命令行方式启动,关闭x windows

debian 设置系统默认以命令行方式启动&#xff0c;关闭x windows 2021-01-02 tech linux 设置 grub启动设置在/etc/default/grub中&#xff0c;打开 default grub 配置: $ sudo vim /etc/default/grub修改以下配置&#xff1a; 更新grub&#xff0c;设置多用户启动: …

为何百兆静态库能打进数兆的可执行文件?

第三方库是工程开发必不可少的部分&#xff0c;而第三方库可以是.a和.framework的静态库&#xff0c;也可以是.framework的动态库&#xff0c;其中静态库是最常用的方式。 静态库往往比较大&#xff0c;可在打包到可执行文件之后&#xff0c;对安装包大小的增加远远小于静态库本…

Linux 常见命令篇

history 获取执行的指令记录 语法格式: history [参数] 常用参数&#xff1a; -a 写入命令记录 -c 清空命令记录 -d 删除指定序号的命令记录 -n 读取命令记录 -r 读取命令记录到缓冲区 -s 将指定的命令添加到缓冲区 -w 将缓冲区信息写入到历史文件 history#获取最近的三条…

Python是个什么鬼?朋友靠它拿了5个offer

闺蜜乐乐&#xff0c;外院科班出身&#xff0c;手持专八和CATTI证书&#xff0c;没想到找工作时却碰了钉子… 半夜12点&#xff0c;乐乐跟我开启了吐槽模式&#xff1a; 拿到offer的都是小公司的翻译活儿&#xff0c;只能糊个口。稍微好点的平台要求可就多了&#xff0c;不仅语…

java计算下一个整10分钟时间点

最近工作上遇到需要固定在整10分钟一个周期调度某个任务&#xff0c;所以需要这样一个功能&#xff0c;记录下 package org.example;import com.google.gson.Gson; import org.apache.commons.lang3.time.DateUtils;import java.io.InputStream; import java.util.Calendar; i…

Hive内置表生成函数

Hive内置UDTF 1、UDF、UDAF、UDTF简介2、Hive内置UDTF 1、UDF、UDAF、UDTF简介 在Hive中&#xff0c;所有的运算符和用户定义函数&#xff0c;包括用户定义的和内置的&#xff0c;统称为UDF&#xff08;User-Defined Functions&#xff09;。如下图所示&#xff1a; UDF官方文档…

Springboot学生疫情管理系统-计算机毕设 附源码 25567

Springboot学生疫情管理系统的设计与实现 摘 要 随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出去&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤&#xf…

Dubbo配置注册中心设置application的name使用驼峰命名法可能存在的隐藏启动异常问题

原创/朱季谦 首先&#xff0c;先提一个建议&#xff0c;在SpringBootDubbo项目中&#xff0c;Dubbo配置注册中心设置的application命名name的值&#xff0c;最好使用xxx-xxx-xxx这样格式的&#xff0c;避免随便使用驼峰命名。因为使用驼峰命名法&#xff0c;在Spring的IOC容器…

数据结构总复习

文章目录 线性表动态分配的顺序存储结构链式存储 线性表 动态分配的顺序存储结构 通过分析代码&#xff0c;我们发现&#xff0c;要注意什么&#xff1a; 要分清你的下标Insert 函数是可以用来没有元素的时候&#xff0c;增加元素的Init(或者Create )函数一般只用来分配空间…

Python中如何选择Web开发框架?

Python开发中Web框架可谓是百花齐放&#xff0c;各式各样的web框架层出不穷&#xff0c;那么对于需要进行Python开发的我们来说&#xff0c;如何选择web框架也就变成了一门学问了。本篇文章主要是介绍目前一些比较有特点受欢迎的Web框架&#xff0c;我们可以根据各个Web框架的特…