O(n^2)算法
查看原帖
O(n^2)算法
1036897
AnOIer楼主2024/12/2 22:06
#include<bits/stdc++.h>
using namespace std;
int n,s1[100100],s2[100100],t1[100100],t2[100100];
void input() {
	memset(s1,0,sizeof s1);
	memset(s2,0,sizeof s2);
	memset(t1,0,sizeof t1);
	memset(t2,0,sizeof t2);
	cin>>n;
	for(int i=1;i<=n;i++) scanf("%1d",&s1[i]);
	for(int i=1;i<=n;i++) scanf("%1d",&s2[i]);
	for(int i=1;i<=n;i++) scanf("%1d",&t1[i]);
	for(int i=1;i<=n;i++) scanf("%1d",&t2[i]);
}
void solve() {
	int ans=0;
	for(int i=1;i<=n;i++) {
		if(s1[i]==s2[i]) continue;
		if(t1[i]==0&&t2[i]==0) continue;
		if(t1[i]) {
			for(int j=i+1;i<=n;i++) {
				if(!t1[j]) break;
				if(s1[j]==s2[i]) {
					swap(s1[j],s1[i]);
					break;
				}
			}
		}
		if(s1[i]==s2[i]) continue;
		if(t2[i]) {
			for(int j=i+1;i<=n;i++) {
				if(!t2[j]) break;
				if(s2[j]==s1[i]) {
					swap(s2[j],s2[i]);
					break;
				}
			}
		}
	}
	for(int i=1;i<=n;i++) {
		if(s1[i]==s2[i]) ans++;	
	}
	cout<<ans<<"\n";
}
int main(){
	int T;
	cin>>T;
	while(T--) {
		input();
		solve();
	}
	return 0;
}

WA30分,按数据来看可以拿60分的,如果写挂了求调QWQ

2024/12/2 22:06
加载中...