90!我的大脑TLE了!有蒟蒻救一下吗?(纯暴力,不喜勿喷)
查看原帖
90!我的大脑TLE了!有蒟蒻救一下吗?(纯暴力,不喜勿喷)
1364428
I_am_sb2楼主2025/6/27 12:35
#include <bits/stdc++.h>
using namespace std;
int n, m, cnt = 0, x, y, ma = INT_MIN;
char a[1010][1010];

int main() {
	cin >> n >> m;
	for (int i = 0; i <= 1001; i++) {
		for (int j = 0; j <= 1001; j++) {
			a[i][j] = '.';
		}
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> a[i][j];
		}
	}
//	for (int i = 1; i <= n; i++) {
//		for (int j = 1; j <= m; j++) {
//			cout << a[i][j] << " ";
//		}
//		cout << endl;
//	}
	bool s = 1;
	for (int i = 1; i <= n && s; i++) {
		for (int j = 1; j <= m && s; j++) {
			if (a[i][j] == '#' && a[i - 1][j] == '.' && a[i + 1][j] == '.' && a[i][j - 1] == '.' && a[i][j + 1] == '.'
			        && s) {
				int tmp = 1;
				if (i == 1 && j == 1) {
					if (a[i + 2][j] == '.' && a[i + 1][j + 1] == '.') {
						tmp++;
					}
					if (a[i][j + 2] == '.' && a[i + 1][j + 1] == '.') {
						tmp++;
					}
				} else if (i == n && j == m) {
					if (a[i - 2][j] == '.' && a[i - 1][j - 1] == '.') {
						tmp++;
					}
					if (a[i][j - 2] == '.' && a[i - 1][j - 1] == '.') {
						tmp++;
					}
				} else if (i == 1 && j == m) {
					if (a[i + 2][j] == '.' && a[i + 1][j - 1] == '.') {
						tmp++;
					}
					if (a[i][j - 2] == '.' && a[i + 1][j - 1] == '.') {
						tmp++;
					}
				} else if (i == n && j == 1) {
					if (a[i - 2][j] == '.' && a[i - 1][j + 1] == '.') {
						tmp++;
					}
					if (a[i][j + 2] == '.' && a[i - 1][j + 1] == '.') {
						tmp++;
					}
				} else if (i == 1) {
					if (a[i ][j - 2] == '.' && a[i + 1][j - 1] == '.') {
						tmp++;
					}
					if (a[i][j + 2] == '.' && a[i + 1][j + 1] == '.') {
						tmp++;
					}
					if (a[i + 1][j - 1] == '.' && a[i + 1][j + 1] == '.' && a[i + 2][j] == '.') {
						tmp++;
					}
				} else if (i == n) {
					if (a[i][j - 2] == '.' && a[i - 1][j - 1] == '.') {
						tmp++;
					}
					if (a[i][j + 2] == '.' && a[i - 1][j + 1] == '.') {
						tmp++;
					}
					if (a[i - 1][j - 1] == '.' && a[i - 1][j + 1] == '.' && a[i - 2][j] == '.') {
						tmp++;
					}
				} else if (j == m) {
					if (a[i + 2][j] == '.' && a[i + 1][j - 1] == '.') {
						tmp++;
					}
					if (a[i - 2][j] == '.' && a[i - 1][j - 1] == '.') {
						tmp++;
					}
					if (a[i + 1][j - 1] == '.' && a[i - 1][j - 1] == '.' && a[i][j - 2] == '.') {
						tmp++;
					}
				} else if (j == 1) {
					if (a[i - 2][j] == '.' && a[i + 1][j - 1] == '.') {
						tmp++;
					}
					if (a[i + 2][j] == '.' && a[i + 1][j + 1] == '.') {
						tmp++;
					}
					if (a[i + 1][j - 1] == '.' && a[i + 1][j + 1] == '.' && a[i][j + 2] == '.') {
						tmp++;
					}
				} else {
					if (a[i - 2][j] == '.' && a[i - 1][j - 1] == '.' && a[i - 1][j + 1] == '.') {
						tmp++;
					}
					if (a[i - 1][j - 1] == '.' && a[i][j - 2] == '.' && a[i - 1][j + 1] == '.') {
						tmp++;
					}
					if (a[i + 1][j - 1] == '.' && a[i + 2][j] == '.' && a[i + 1][j + 1] == '.') {
						tmp++;
					}
					if (a[i - 1][j + 1] == '.' && a[i][j + 2] == '.' && a[i + 1][j + 1] == '.') {
						tmp++;
					}
				}
				if (tmp > ma) {
					x = i;
					y = j;
					ma = tmp;
				}
			}
		}
	}
	a[x][y] = '.';
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			if (a[i][j] == '.' && a[i - 1][j] == '.' && a[i + 1][j] == '.' && a[i][j - 1] == '.' && a[i][j + 1] == '.'
			   ) {
				cnt++;
			}
		}
	}
	cout << cnt;
	return 0;
}
2025/6/27 12:35
加载中...