【求助】昨天比赛B1
  • 板块学术版
  • 楼主Unnamed114514
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/11/7 13:22
  • 上次更新2023/11/4 01:11:08
查看原帖
【求助】昨天比赛B1
556362
Unnamed114514楼主2021/11/7 13:22

有大佬看看这模拟有什么问题吗?

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int n,t,a[maxn],b[maxn],sum1,sum2,sum3,k,m;
int main(){
	scanf("%d",&t);
	while(t--){
		sum1=sum2=sum3=k=0;
		scanf("%d",&m);
		n=m<<1;
		for(int i=1;i<=n;i++)
			scanf("%d",&a[i]);
		for(int i=1;i<=n;i++){
			scanf("%d",&b[i]);
			if((a[i]==1&&b[i]==2)||(a[i]==2&&b[i]==3)||(a[i]==3&&a[i]==1))
				sum1++;
			else if(a[i]==b[i])
				sum2++;
			else
				sum3++;
		}
		for(int i=1;i<=n;i++){
			if(sum1==n)
				break;
			if(k>=n)
				continue;
			else{
				if(!(a[i]==1&&b[i]==2)||(a[i]==2&&b[i]==3)||(a[i]==3&&a[i]==1)){
					if(a[i]==b[i]){
						if(sum3>=n)
							continue;
						else if(k>=m){
							b[i]=a[i]+1;
							if(b[i]==4)
								b[i]=1;
							sum1++;
						} else{
							a[i]=b[i]-1;
							if(a[i]==0)
								a[i]=3;
							sum1++;
						}
					} else{
						if(k>=m){
							b[i]=a[i]+1;
							if(b[i]==4)
								b[i]=1;
							sum1++;
						} else{
							a[i]=b[i]-1;
							if(a[i]==0)
								a[i]=3;
							sum1++;
						}
					}
					k++;
				}
			}
		}
		printf("%lld\n",sum1);
		for(int i=1;i<=n;i++)
			printf("%lld ",a[i]);
		puts("");
		for(int i=1;i<=n;i++)
			printf("%lld ",b[i]);
		puts(""); 
	}
	return 0;
}
2021/11/7 13:22
加载中...