上海计算机学会2024年12月月赛C++丙组T2最长连签
发布时间
阅读量:
阅读量
最长连签
内存限制: 256 Mb时间限制: 1000 ms
题目描述
Bob 和 Bella 在一个 OJ 平台上练习题目。该平台提供一个“签到”功能:如果某用户在某一天解决了至少一个问题,则该用户在这一天的签到成功。连续签到是指在连续的若干天内,用户每天都成功签到。
现在,已统计了连续 n 天里 Bob 和 Bella 每天的做题情况,即两人每天分别解决的题目数量。请你找出 Bob 和 Bella 中谁的最长连续签到天数更长,或者报告他们的最长连续签到天数相同。
输入格式
第一行一个整数 T 表示数据组数。对于每组数据:
第一行一个整数 n 表示天数。
第二行 n 个整数 a1∼n,其中 aiai 表示 Bob 在第 i 天通过的题目数量。
第三行 n 个整数 b1∼n,其中 bibi 表示 Bella 在第 i 天通过的题目数量。
输出格式
对于每组数据,如果 Bob 的最长连签天数更大,输出一行 Bob;如果 Bella 的最长连签天数更大,输出一行 Bella;否则两人平局,输出一行 Draw。
数据范围
对于 30% 的数据,1≤∑n≤101≤∑n≤10。
对于 60% 的数据,1≤∑n≤10001≤∑n≤1000。
对于 100% 的数据,1≤T≤105,1≤∑n≤105,0≤ai,bi≤10^9,其中 ∑n 表示单个测试点里所有 n 的和。
样例数据
输入:
3
6
1 7 3 0 2 13
0 2 3 4 5 0
3
1 3 4
3 1 2
5
1 2 3 0 1
1 2 0 2 3
输出:
Bella
Draw
Bob
说明:
在第一组数据中,Bob 在第 1,2,3 天连续签到,最长连签天数是 3;Bella 在第 2,3,4,5 天连续签到,最长连签天数是 4,所以输出 Bella。
解析:循环,详见代码:
#include<bits/stdc++.h>
using namespace std;
int t, n;
int main() {
cin >> t;
while(t--) {
cin >> n;
int a;
int ansa = 0, cnta = 0;//Bob的最长连续签到天数和当前连续签到天数
int ansb = 0, cntb = 0;//Bella的最长连续签到天数和当前连续签到天数
for(int i = 1; i <= n; i++) {
cin >> a;
if (a != 0) {//如果做了题
cnta++;//当前连续签到天数加一
} else {//否则
cnta = 0;//当前连续签到天数为0
}
ansa = max(ansa, cnta);//最长连续签到天数为当前连续签到天数的最大值
}
for(int i = 1; i <= n; i++) {
cin >> a;
if (a != 0) {
cntb++;
} else {
cntb = 0;
}
ansb = max(ansb, cntb);
}
if (ansa > ansb) {//比较,输出
cout << "Bob\n";
} else if (ansa < ansb) {
cout << "Bella\n";
} else {
cout << "Draw\n";
}
}
return 0;
}
cpp

全部评论 (0)
还没有任何评论哟~
