
2024 睿抗机器人开发者大赛CAIP-编程技能赛-高职组(省赛)
热爱拼题的你,请直接在屏幕上用汉语拼音输出这句话:我爱拼题啊!
RC-v1 我爱拼题啊
热爱拼题的你,请直接在屏幕上用汉语拼音输出这句话:我爱拼题啊!
输入格式:
本题没有输入。
输出格式:
在一行中输出,以惊叹号结尾。
输入样例:
无
输出样例:
wo3 ai4 pin1 ti2 a !
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"wo3 ai4 pin1 ti2 a !"<<endl;
return 0;
}
RC-v2 小白兔拔萝卜
小白兔爱萝卜,但是它的力量有限,太大的萝卜它拔不动。
本题就请你根据小白兔的力量和拔出这个萝卜需要的力量,告诉小白兔,它能否拔出这只萝卜。
输入格式:
输入在一行里给出两个不超过 100 的正整数,分别是小白兔的力量和拔出这个萝卜需要的力量。
输出格式:
如果小白兔的力量足够大,就输出 Ba!
,然后在第二行输出它多余的力量;如果不行,就输出 Suan4 le ba.
,然后在第二行输出它不足的力量。注意两个力量值相等的时候,小白兔也是可以拔出萝卜的。
输入样例 1:
99 66
输出样例 1:
Ba!
33
输入样例 2:
55 77
输出样例 2:
Suan4 le ba.
22
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
if(a>=b){
cout<<"Ba!"<<endl;
cout<<abs(a-b)<<endl;
}else{
cout<<"Suan4 le ba."<<endl;
cout<<abs(a-b)<<endl;
}
return 0;
}
RC-v3 逆行
网上有个段子说:妻子在家听广播,听到某高速路上有一辆车在逆行,想到丈夫在那条高速上行驶,就打电话对丈夫说:“老公啊,你走的那条高速上有一辆车在逆行,你小心点。”她丈夫说:“何止啊!我看好几百辆车都在逆行!”
现在我们查了一下高速公路上拍到的好几百辆车的时速,发现有的朝东开,有的朝西开,都不知道是谁在逆行了…… 于是让我们简单粗暴地解决这个问题:朝哪个方向开的车多,哪个方向就是正确的,另一方就判为逆行(开玩笑的千万嫑当真)。现在就请你统计一下,有多少辆车是逆行的。
输入格式:
输入第一行给出一个正整数 N,为高速公路上拍到的车辆数,题目保证这是一个不超过 1000 的奇数。第二行给出 N 个整数,为每辆车的时速。我们用正数表示朝东开的时速,负数表示朝西开的时速。题目保证时速(绝对值)均不超过 200,并且时速没有 0,即没有一辆车是停在高速公路上不动的。
输出格式:
在一行中输出逆行的车辆数。
输入样例:
7
85 -90 110 95 112 -120 -70
输出样例:
3
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a=0,b=0;
for(int i=0;i<n;i++){
int num;
cin>>num;
if(num<0){
a++;
}else{
b++;
}
}
cout<<min(a,b)<<endl;
return 0;
}
RC-v4 翻炒字符串
给定一个字符串,要求你按照以下规则进行“翻炒”:
- 将字符串进行翻转;
- 如果字符串长度是个奇数,则将其正中间的字符删掉;否则将其两端的两个字符删掉;
- 将剩下的字符两两翻转,即第1、2个字符换位,第3、4个字符换位,以此类推。
最后输出结果串。
输入格式:
输入在一行中给出一个长度不超过 104 的、仅由英文字母组成的字符串。题目保证输入字符串的长度不小于 3。
输出格式:
在一行中输出执行了 3 步翻炒以后得到的结果串。
输入样例 1:
abcdefg
输出样例 1:
fgceab
输入样例 2:
abcdefgh
输出样例 2:
fgdebc
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
reverse(s.begin(),s.end());//1
int len=s.size();
if(len%2!=0){//2
s.erase(len/2,1);
}else{
s.erase(0,1);
s.erase(len-1,1);
}
for(int i=0;i<s.size();i+=2){
cout<<s[i+1]<<s[i];//3
}
return 0;
}
RC-v5 主菜与配菜
中国人吃饭讲究一桌席上要有主菜、配菜,还应该再加一碗汤。现在厨师长需要在给定时间内做好一桌席,给了你一系列主菜、配菜、汤的烹制时长,并且告诉你规定完成的时间,请你帮忙检查一下,哪些菜单是有可能完成的,哪些不可能。
输入格式:
输入第一行首先给出三个正整数 N1、N2、N3(≤103),分别对应主菜、配菜、汤这三大类菜品的种类数。随后三行顺序给出 N1 种主菜、N2 种配菜、N3 种汤的烹制时间。这里我们将三大类菜品都分别从 1 开始顺序编号,每行第 i 个整数就对应该大类第 i 种菜品的烹制时间,每个烹制时间为不超过 60(分钟)的正整数。
接下来一行给出厨师长干活的开始时间和结束时间、以及候选的菜单数 K(≤20),其中的时间按 hh:mm
的格式给出,hh
按一天 24 小时制,范围在 [0, 23] 内;mm
是分钟,范围在 [0, 59]。题目保证结束时间在开始时间之后,且都在同一天内。
随后 K 行,每行给出一张菜单,格式如下:
m 菜品1 菜品2 …… 菜品m
其中 m
不超过 10,为一桌菜品的种类数;菜品i
给出第 i
种菜品的带前缀的编号 —— 主菜的前缀是 Z
,配菜的前缀是 P
,汤的前缀是 T
。同一行的输入之间以空格分隔。
注意:这里假设厨师长是做完一道菜才做下一道菜的,不会并行。
输出格式:
对每一张菜单,如果同时包含了主菜、配菜和汤,并且所有菜品能在规定时间内完成,则在一行中输出 Yes
,否则输出 No
。
输入样例:
2 4 3
30 45
10 15 5 20
60 25 40
08:30 11:40 4
7 T1 Z2 P4 T3 P1 P2 Z1
4 Z1 P1 P2 P3
5 P4 P2 Z1 P3 T2
6 Z2 P3 P3 P1 T1 P3
输出样例:
No
No
Yes
Yes
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<bits/stdc++.h>
using namespace std;
int a[10010],b[10010],c[10010];
int main(){
int n,m,k;
cin>>n>>m>>k;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=m;i++)cin>>b[i];
for(int i=1;i<=k;i++)cin>>c[i];
int aa,bb,cc,dd;
char _;
cin>>aa>>_>>bb>>cc>>_>>dd;
int time=(cc*60)+dd-aa*60-bb;
int t;
cin>>t;
while(t--){
int an;
cin>>an;
int sum=0;
int s,a1=0,a2=0,a3=0;
for(int i=0;i<an;i++){
cin>>_>>s;
if(_=='Z'){
a1=1;
sum+=a[s];
}
if(_=='P'){
a2=1;
sum+=b[s];
}
if(_=='T'){
a3=1;
sum+=c[s];
}
}
if(sum<=time &&a1==1&&a2==1&&a3==1)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
RC-v6 最受欢迎的书
图书馆里有 n 种书,每种书分别有若干本可以借出。现在馆长给你一份清单,列出了每种书过去 d 天被借出了多少本,被还回来多少本。首先要请你算一下现在每种书还有多少本可以借出的,然后请你列出最受欢迎的书,也就是被借出过最多次的那些书。
输入格式:
输入第一行给出两个正整数 n(≤105)和 d(≤7),分别是书的种类数和借书还书记录的天数。
随后一行给出 n 个不超过 1000 的正整数,对应图书馆拥有的每种书的数量。
再后面有 n 行,每行给出一种书的借书还书记录,即 d 对数字,对应每一天借出的数量和还回的数量。题目保证这个清单是符合常理的,第一天还回的数量一定是 0,并且任何一天结束的时候,还书的总数量不会超过借书的总数量。
输出格式:
输出分成 n 行,每行输出一种书还可以借出的数量。如果这本书是最受欢迎的书,则在这个数量的后面加一个星号 *
。
输入样例:
5 3
500 200 800 30 180
15 0 35 2 20 35
180 0 10 80 67 50
88 0 0 28 10 0
1 0 1 1 5 1
100 0 57 80 100 77
输出样例:
467
73*
730
25
80*
样例解释:
以第 1 种书为例:开始有 500 本;第 1 天借出 15 本,还回 0 本,图书馆里还剩 485 本;第 2 天借出 35 本,还回 2 本,还剩 452 本;第 3 天借出 20 本,还回 35 本,还剩 467 本。这种书一共被借出了 70 次。
其他种类的图书同理计算。其中第 2 种和最后一种书都被借出了 257 次,都是最受欢迎的书。
代码长度限制
16 KB
C++
时间限制
400ms
内存限制
64 MB
#include<bits/stdc++.h>
using namespace std;
int s[100010];
int main(){
int n,d;
cin>>n>>d;
unordered_map<int,int> maxn;//得用unordered 直接map自动排序会超时两个样例
for(int i=1;i<=n;i++){
cin>>s[i];
}
int maxx=0;
for(int i=1;i<=n;i++){
for(int j=0;j<d;j++){
int a,b;
cin>>a>>b;
s[i]-=a;
s[i]+=b;
maxn[i]+=a;
maxx=max(maxx,maxn[i]);
}
}
for(int i=1;i<=n;i++){
cout<<s[i];
if(maxn[i]==maxx){
cout<<"*";
}
cout<<endl;
}
return 0;
}
RC-v7 熊猫血
在“一年一度喜剧大赛”上有一部作品《少爷和我》,讲的是霸道管家龙傲天和憨厚少爷刘波的故事。管家有着霸总文学主人公所有的毛病,包括会咳出熊猫血……
血型是指血液各成分的抗原在个体间出现的差异。人类血型有数十种类型或系统,庞大复杂,如果把所有分类组合都考虑在内,可以细分出非常多种血型。熊猫血是 Rh 阴性血的俗称,东方人 Rh 阴性血型非常稀有,只占不到 0.5%。
本题给出一批熊猫血型的数据,请你帮前来查询的人查一下他们是否有熊猫血,最后统计一下他们中间的熊猫血占比是多少。
输入格式:
输入首先给出一批熊猫血型的数据:在第一行给出不超过 104 的正整数 N,随后 N 行,每行给出一种熊猫血型的编号,由不超过 8 个大写英文字母和数字组成。题目保证编号不重复。
随后是查询人的信息,首先是一个不超过 105 的非负整数 M,随后 M 行,每行给出一个人的血型编号,格式同上。
输出格式:
在第一行中输出 M 个由 0
或 1
组成的串,其中第 i 位对应第 i 个查询者,如果是熊猫血则为 1
,否则为 0
。
第二行输出携带熊猫血者所占的百分比(意思是:有熊猫血的人数/查询总人数×100),输出小数点后 2 位。
第三行输出被查询次数最多的那种熊猫血型的编号。题目保证输出存在唯一。
输入样例:
3
RH0ABP1
RH0APY
BPYORH0
9
BPYORH1
RH0ABP2
RH0APY
APYORH0
RH0OPY
BPYORH0
RH1APY
RH0APY
ABPYRH0
输出样例:
001001010
33.33
RH0APY
时间限制
200 ms
内存限制
64 MB
栈限制
8192 KB
#include<bits/stdc++.h>
using namespace std;
string s[100010];
int main(){
int n,m,xm=0;
map<string,int> mp,maxn;
cin>>n;
for(int i=0;i<n;i++){
cin>>s[i];
mp[s[i]]=1;
}
cin>>m;
string sr="";
int maxx=0;
for(int i=0;i<m;i++){
string p;
cin>>p;
if(mp.count(p)!=0){
maxn[p]++;
maxx=max(maxx,maxn[p]);
sr+='1';
xm++;
}else{
sr+='0';
}
}
double sum=(xm*1.0/m*1.0)*100;
cout<<sr<<endl;
printf("%.2lf\n",sum);
for(int i=0;i<n;i++){
if(maxn[s[i]]==maxx){
cout<<s[i]<<endl;
}
}
return 0;
}

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)