迷惑行为?定义先后不一样两个评测结果?
查看原帖
迷惑行为?定义先后不一样两个评测结果?
251992
fairyland楼主2020/9/15 01:25

哪位大佬帮我看看这是什么问题,球球了(只有注释的地方不一样)


100分代码

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
bool p;
int a[maxn],b[maxn],b1[maxn],b2[maxn];
int main()
{
	
	int n,m,now;//先定义了now
	scanf("%d %d",&n,&m);
	for (int i=1;i<=n;i++)
		a[i]=i;
	for (int i=1;i<=m;i++)
	{
		scanf("%d",&b[i]);
		if (b[i]==3)
			scanf("%d %d",&b1[i],&b2[i]);
	}
	
	for (int i=m;i;i--)
	{
		if (b[i]==1||b[i]==2)
		{
			now=i;
			break;
		}
	}
	if (b[now]==2)p=1;
	else	   p=0;
	for (int i=now+1;i<=m;i++)
	{
		if (b[i]==3)
		{
			if (p==0)
				swap(a[b1[i]],a[b2[i]]);
			else
				swap(a[n-b1[i]+1],a[n-b2[i]+1]);
		}
		else
			p=1-p;
	}
	if (p==0)for (int i=1;i<=n;i++)printf("%d ",a[i]);
	else   for (int i=n;i>=1;i--)printf("%d ",a[i]);
	return 0;
}

87分代码

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
bool p;
int a[maxn],b[maxn],b1[maxn],b2[maxn];
int main()
{
	
	int n,m;
	scanf("%d %d",&n,&m);
	for (int i=1;i<=n;i++)
		a[i]=i;
	for (int i=1;i<=m;i++)
	{
		scanf("%d",&b[i]);
		if (b[i]==3)
			scanf("%d %d",&b1[i],&b2[i]);
	}
	int now;
	for (int i=m;i;i--)
	{
		if (b[i]==1||b[i]==2)
		{
			now=i;
			break;
		}
	}
	if (b[now]==2)p=1;
	else	   p=0;
	for (int i=now+1;i<=m;i++)
	{
		if (b[i]==3)
		{
			if (p==0)
				swap(a[b1[i]],a[b2[i]]);
			else
				swap(a[n-b1[i]+1],a[n-b2[i]+1]);
		}
		else
			p=1-p;
	}
	if (p==0)for (int i=1;i<=n;i++)printf("%d ",a[i]);
	else   for (int i=n;i>=1;i--)printf("%d ",a[i]);
	return 0;
}

跪求大佬解答这个为啥会这样 orz orz orz

2020/9/15 01:25
加载中...