求助大佬!
查看原帖
求助大佬!
397926
愚末语tenseTL楼主2021/8/5 13:08

题目没有说明同等情况移哪面墙。 就拿样例来说,我移掉4 2 N也可以使得面积最大,满足题意,但题目没有说print any。 被WA的代码:

#include<bits/stdc++.h>
using namespace std;
int f1[5] = { 0,0,1,0,-1 };
int f2[5] = { 0,1,0,-1,0 };
char ch[5] = { '0','E','S','W','N' };
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int n, m;
	cin >> m >> n;
	vector<vector<vector<int>>>b(n + 1, vector<vector<int>>(m + 1, vector<int>(5)));
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			int t;
			cin >> t;
			bitset<10>p = bitset<10>(t);
			if (p[0])b[i][j][3] = 1;
			if (p[1])b[i][j][4] = 1;
			if (p[2])b[i][j][1] = 1;
			if (p[3])b[i][j][2] = 1;
		}
	}
	int idx = 0;
	vector<vector<int>>color(n + 1, vector<int>(m + 1));
	vector<int>ans(n * m + 1);
	function<void(int, int)>dfs = [&](int a, int bb) {
		color[a][bb] = idx;
		ans[idx]++;
		for (int i = 1; i <= 4; i++) {
			int x = a + f1[i];
			int y = bb + f2[i];
			if (x<1 || y<1 || x>n || y>m||b[a][bb][i]||color[x][y])continue;
			dfs(x, y);


		}
	};
	
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			if (color[i][j])continue;
			idx++;
			dfs(i, j);
			
		}
	}
	int maxn = 0;
	for (int i = 1; i <= idx; i++) {
		maxn = max(maxn, ans[i]);
	}
	cout << idx << '\n';
	cout << maxn << '\n';
	int kase1, kase2, kase3;
	function<void(int, int)>solve = [&](int x, int y) {
		for (int i = 1; i <= 4; i++) {
			int xx = x + f1[i];
			int yy = y + f2[i];
			if (xx<1 || yy<1 || xx>n || yy>m)continue;
			if (color[x][y] != color[xx][yy]) {
				if (maxn < ans[color[x][y]] + ans[color[xx][yy]]) {
					maxn = ans[color[x][y]] + ans[color[xx][yy]];
					kase1 = x; kase2 = y; kase3 = i;
				}
			}
		}
	};
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			solve(i, j);
		}
	}
	cout << maxn << '\n';
	if (ch[kase3] == 'W') {
		cout << kase1 << ' ' << kase2 - 1 << ' ' << 'E' << '\n';
	}
	else if (ch[kase3] == 'S') {
		cout << kase1 + 1 << ' ' << kase2 <<' '<< 'N' << '\n';
	}
	else cout << kase1 << ' ' << kase2 << ' ' << ch[kase3] << '\n';

	return 0;
}
2021/8/5 13:08
加载中...