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

2023-11-28 23:01

本文主要是介绍(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;
}

这篇关于(2023码蹄杯)省赛(初赛)第二场真题(原题)(题解+AC代码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/430526

相关文章

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

hdu 3065 AC自动机 匹配串编号以及出现次数

题意: 仍旧是天朝语题。 Input 第一行,一个整数N(1<=N<=1000),表示病毒特征码的个数。 接下来N行,每行表示一个病毒特征码,特征码字符串长度在1—50之间,并且只包含“英文大写字符”。任意两个病毒特征码,不会完全相同。 在这之后一行,表示“万恶之源”网站源码,源码字符串长度在2000000之内。字符串中字符都是ASCII码可见字符(不包括回车)。

zoj 3228 ac自动机

给出一个字符串和若干个单词,问这些单词在字符串里面出现了多少次。单词前面为0表示这个单词可重叠出现,1为不可重叠出现。 Sample Input ab 2 0 ab 1 ab abababac 2 0 aba 1 aba abcdefghijklmnopqrstuvwxyz 3 0 abc 1 def 1 jmn Sample Output Case 1 1 1 Case 2

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

D4代码AC集

贪心问题解决的步骤: (局部贪心能导致全局贪心)    1.确定贪心策略    2.验证贪心策略是否正确 排队接水 #include<bits/stdc++.h>using namespace std;int main(){int w,n,a[32000];cin>>w>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int i=1

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [