上海月赛T2题解

时间:2024-12-16 07:47:57

最长连签

内存限制: 256 Mb时间限制: 1000 ms

题目描述

Bob 和 Bella 在一个 OJ 平台上练习题目。该平台提供一个“签到”功能:如果某用户在某一天解决了至少一个问题,则该用户在这一天的签到成功。连续签到是指在连续的若干天内,用户每天都成功签到。

现在,已统计了连续 nn 天里 Bob 和 Bella 每天的做题情况,即两人每天分别解决的题目数量。请你找出 Bob 和 Bella 中谁的最长连续签到天数更长,或者报告他们的最长连续签到天数相同。

输入格式

第一行一个整数 TT 表示数据组数。对于每组数据:

第一行一个整数 nn 表示天数。

第二行 nn 个整数 a_{1\sim n}a1∼n​,其中 a_iai​ 表示 Bob 在第 ii 天通过的题目数量。

第三行 nn 个整数 b_{1\sim n}b1∼n​,其中 b_ibi​ 表示 Bella 在第 ii 天通过的题目数量。

输出格式

对于每组数据,如果 Bob 的最长连签天数更大,输出一行 Bob;如果 Bella 的最长连签天数更大,输出一行 Bella;否则两人平局,输出一行 Draw

数据范围

对于 30\%30% 的数据,1\leq \sum n\leq 101≤∑n≤10。

对于 60\%60% 的数据,1\leq \sum n\leq 10001≤∑n≤1000。

对于 100\%100% 的数据,1\leq T\leq 10^51≤T≤105,1\leq \sum n\leq 10^51≤∑n≤105,0\leq a_i,b_i\leq 10^90≤ai​,bi​≤109,其中 \sum n∑n 表示单个测试点里所有 nn 的和。

样例数据

输入:

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

还是大水题!!!for循环+if语句

#include<bits/stdc++.h>
using namespace std;
int n,a[100005],b[100005],cnt=0,ans=0;
int main(){
  	int t;
  	cin>>t;
  	while(t--){
		cin>>n;
		cnt=ans=0;
		int c=0,d=0;
		for(int i=1;i<=n;i++){
			cin>>a[i];
			if(a[i]>0)c++;
			else{
				cnt=max(cnt,c);
				c=0;
			}
		}
		cnt=max(cnt,c);
		for(int i=1;i<=n;i++){
			cin>>b[i];
			if(b[i]>0)d++;
			else{
				ans=max(ans,d);
				d=0;
			}
		}
		ans=max(ans,d);
		if(cnt>ans)cout<<"Bob";
		else if(ans>cnt)cout<<"Bella";
		else cout<<"Draw";
		cout<<'\n';
	}
  	return 0;
}