ebullient(2018.10.25)

结论巨好想,每一次操作可以看作把一个b往前移一位,另一个b往后移一位,逆序对个数不改变,判断即可做第一问。
第二问
此处代码仅给出第一问做法:

#include<cstdio>
#include<algorithm>
using namespace std;
int n,f[1000001],g[1000001];
char a[1000001],b[1000001];
int main()
{
	while(scanf("%d",&n)!=EOF)
	{
		scanf("%s",a+1);
		scanf("%s",b+1);
		int sum1=0,sum2=0,ans=0;
		for(int i=1;i<=n;i++)
		{
			if(a[i]=='b')f[++sum1]=i;
			if(b[i]=='b')g[++sum2]=i;
		}
		if(sum1!=sum2){printf("Forever
");continue;}
		for(int i=1;i<=sum1;i++)ans+=f[i]-g[i];
		if(!ans)printf("Ever
");
		else printf("Forever
");
	}
}
原文地址:https://www.cnblogs.com/lcxer/p/9852995.html