各位dalao好,这题应该暴力就能做,我也是这么写的,可是样例过了,测试只有30分,求助!
#include<bits/stdc++.h>
using namespace std;
int rule[10][10]={{0,-1,1,1,-1},{1,0,-1,1,-1},{-1,1,0,-1,1},{-1,-1,1,0,1},{-1,-1,1,1,0}};
// rule[a][b]代表小a出a,小b出b的胜负结果
int n,na,nb;
int a[210],b[210];
int main(){
freopen("in.cpp","r",stdin);
cin>>n>>na>>nb;
a[0]=na; b[0]=nb;
for(int i=1;i<=na;i++)cin>>a[i];
for(int i=1;i<=nb;i++)cin>>b[i];
for(int i=1;i<=200;i++){//将小a的周期性出拳复制进a数组,把小a的所有出拳记录
if(a[0]+na<=n){
for(int j=a[0]+1;j<=a[0]+na;j++) a[j]=a[j-a[0]];
a[0]+=na;
}else{
for(int j=a[0]+1;j<=n;j++) a[j]=a[j-a[0]];
break;
}
}
for(int i=1;i<=200;i++){//同上
if(b[0]+nb<=n){
for(int j=b[0]+1;j<=b[0]+nb;j++) b[j]=b[j-b[0]];
b[0]+=nb;
}else{
for(int j=b[0]+1;j<=n;j++) b[j]=b[j-b[0]];
break;
}
}
int ans1=0,ans2=0;
for(int i=1;i<=n;i++){//记录结果
if(rule[a[i]][b[i]]==-1)ans2++;//小a出a[i],小b出b[i]的胜负结果
if(rule[a[i]][b[i]]==1)ans1++;
}
cout<<ans1<<" "<<ans2;
}
希望dalao们帮帮忙,谢谢!