自闭了
  • 板块学术版
  • 楼主PTqwq
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/2/26 22:25
  • 上次更新2023/10/28 07:39:29
查看原帖
自闭了
448881
PTqwq楼主2022/2/26 22:25

RT,今晚ABC的C,为什么用pair就wa,手写就ac?

WA:

#include <bits/stdc++.h>
using namespace std;
char ch[1005][1005];
int n;
inline int is_in (pair < int, int > x) {
	int a = x.first;
	int b = x.second;
	if (a >= 1 && a <= n && b >= 1 && b <= n) return 1;
	else return 0;
}
int possi[10];
inline pair < int, int > po1 (int x, int y) {
	return make_pair (x, y - 5);
}
inline pair < int, int > po2 (int x, int y) {
	return make_pair (x, y + 5);
}
inline pair < int, int > po3 (int x, int y) {
	return make_pair (x - 5, y);
}
inline pair < int, int > po4 (int x, int y) {
	return make_pair (x + 5, y);
}
inline pair < int, int > po5 (int x, int y) {
	return make_pair (x - 5, y - 5);
}
inline pair < int, int > po6 (int x, int y) {
	return make_pair (x - 5, y + 5);
}
inline pair < int, int > po7 (int x, int y) {
	return make_pair (x + 5, y - 5);
}
inline pair < int, int > po8 (int x, int y) {
	return make_pair (x + 5, y + 5);
}
signed main () {
	cin >> n;
	for (int i = 1;i <= n; ++ i) {
		for (int j = 1;j <= n; ++ j) {
			cin >> ch[i][j];
		}
	}
	for (int i = 1;i <= n; ++ i) {
		for (int j = 1;j <= n; ++ j) {
			pair < int, int > s1 = po1 (i, j);
			pair < int, int > s2 = po2 (i, j);
			pair < int, int > s3 = po3 (i, j);
			pair < int, int > s4 = po4 (i, j);
			pair < int, int > s5 = po1 (i, j);
			pair < int, int > s6 = po2 (i, j);
			pair < int, int > s7 = po3 (i, j);
			pair < int, int > s8 = po4 (i, j);						
			if (is_in (s2)) {
				int bl = 0;
				for (int k = 0;k <= 5; ++ k) {
					if (ch[i][j + k] == '#') bl ++;
				}
				if (bl >= 4) {
					cout << "Yes\n"; return 0;
				}
			}
			if (is_in (s4)) {
				int bl = 0;
				for (int k = 0;k <= 5; ++ k) {
					if (ch[i + k][j] == '#') bl ++;
				}
				if (bl >= 4) {
					cout << "Yes\n"; return 0;
				}				
			}
			if (is_in (s6)) {
				int bl = 0;
				for (int k = 0;k <= 5; ++ k) {
					if (ch[i - k][j + k] == '#') bl ++;
				}
				if (bl >= 4) {
					cout << "Yes\n"; return 0;
				}				
			}
			if (is_in (s8)) {
				int bl = 0;
				for (int k = 0;k <= 5; ++ k) {
					if (ch[i + k][j + k] == '#') bl ++;
				}
				if (bl >= 4) {
					cout << "Yes\n"; return 0;
				}				
			}
		}
	}
	cout << "No\n"; return 0;
} 

AC:

#include <bits/stdc++.h>
using namespace std;
char ch[1005][1005];
int n;
inline int is_in (int a, int b) {
	if (a >= 1 && a <= n && b >= 1 && b <= n) return 1;
	else return 0;
}
int possi[10];
signed main () {
	cin >> n;
	for (int i = 1;i <= n; ++ i) {
		for (int j = 1;j <= n; ++ j) {
			cin >> ch[i][j];
		}
	}
	for (int i = 1;i <= n; ++ i) {
		for (int j = 1;j <= n; ++ j) {					
			if (is_in (i, j + 5)) {
				int bl = 0;
				for (int k = 0;k <= 5; ++ k) {
					if (ch[i][j + k] == '#') bl ++;
				}
				if (bl >= 4) {
					cout << "Yes\n"; return 0;
				}
			}
			if (is_in (i + 5, j)) {
				int bl = 0;
				for (int k = 0;k <= 5; ++ k) {
					if (ch[i + k][j] == '#') bl ++;
				}
				if (bl >= 4) {
					cout << "Yes\n"; return 0;
				}				
			}
			if (is_in (i - 5, j + 5)) {
				int bl = 0;
				for (int k = 0;k <= 5; ++ k) {
					if (ch[i - k][j + k] == '#') bl ++;
				}
				if (bl >= 4) {
					cout << "Yes\n"; return 0;
				}				
			}
			if (is_in (i + 5, j + 5)) {
				int bl = 0;
				for (int k = 0;k <= 5; ++ k) {
					if (ch[i + k][j + k] == '#') bl ++;
				}
				if (bl >= 4) {
					cout << "Yes\n"; return 0;
				}				
			}
		}
	}
	cout << "No\n"; return 0;
} 
2022/2/26 22:25
加载中...