MLE...
查看原帖
MLE...
978486
ca0vnv楼主2024/9/28 17:56

80分求助

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N=1010;
ll a[N][N],n,vis[N][N],sf,sg; 
int fx[9][3]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}};
string dfs(int ii,int jj,string s){
	for(int i=0;i<8;i++){
		int ni = ii+fx[i][0];
		int nj = jj+fx[i][1];
		if(ni>=1&&ni<=n&&nj>=1&&nj<=n){
			if(a[ni][nj]>a[ii][jj])s[0]='1';
			if(a[ni][nj]<a[ii][jj])s[1]='1';
			if(vis[ni][nj]==0&&a[ni][nj]==a[ii][jj]){
				vis[ni][nj]=1;
				s = dfs(ni,nj,s);
			}
		}
	}
	return s;
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(vis[i][j]==0){
				vis[i][j]=1;
				string s = dfs(i,j,"00");//00 01 10 11
				if(s[0]=='0'&&s[1]=='0')sg++,sf++;
				if(s[0]=='0'&&s[1]=='1')sf++;
				if(s[0]=='1'&&s[1]=='0')sg++;
			}
		}
	}
	cout<<sf<<" "<<sg;
	return 0;
}
2024/9/28 17:56
加载中...