求Hack
查看原帖
求Hack
857626
_RainCappuccino_楼主2024/7/12 10:30

题目

这份代码应该可以被卡到 O(n4)O(n ^ 4),但是我不会造 hack,求助万能的谷民!

#include <bits/stdc++.h>
using namespace std;
int t, n, m, c[510][510];
bool f(int x, int y) {
	int a = c[x][y], b = c[x][y + 1],
	c1 = c[x + 1][y], d = c[x + 1][y + 1];
	if (!a && !b && !c1 && !d) return 0;
	int bas = 0;
	if (a) bas = a;
	if (b) bas = b;
	if (c1) bas = c1;
	if (d) bas = d;
	if ((!a || a == bas)
		&& (!b || b == bas)
		&& (!c1 || c1 == bas)
		&& (!d || d == bas)) {
		return 1;
	}
	return 0;
}
int main() {
//	freopen("TestData020.in", "r", stdin);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> t;
	while (t--) {
		cin >> n >> m;
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= m; j++) {
				cin >> c[i][j];
			}
		}
		int p = 0;
		while (1) {
			bool flag = 0;
			for (int i = 1; i <= n; i++)
				for (int j = 1; j <= m; j++)
					if (c[i][j])
						flag = 1;
			if (!flag) {
				p = 1;
				break;
			}
			flag = 0;
			for (int i = 1; i < n; i++) {
				for (int j = 1; j < m; j++) {
					if (f(i, j)) {
						c[i][j] = 
						c[i][j + 1] = 
						c[i + 1][j] = 
						c[i + 1][j + 1] = 0;
						flag = 1;
					}
				}
			}
			if (!flag) break;
		}
		if (p) cout << "Yes\n";
		else cout << "No\n";
	}
	return 0;
}


2024/7/12 10:30
加载中...