为什么f题这样过不了,我自己测评了2到500的样例都可以

#include<iostream>

using namespace std;

int main()
{
	int n;
	scanf("%d", &n);

	if (n == 1)printf("1\n1 1\n");
	else if (n == 2) {
		printf("4\n");
		for (int i = 1; i <= 2; i++) {
			for (int j = 1; j <= 2; j++)printf("%d %d\n", i, j);
		}
	}
	else if (n == 3) {
		printf("4\n");
		printf("1 2\n2 1\n2 3\n3 2\n");
	}
	else if (n == 4) {
		printf("5\n");
		printf("2 2\n2 4\n3 3\n4 2\n4 4\n");
	}
	else if (n == 5)printf("5\n1 3\n2 2\n2 4\n3 1\n4 4\n");
	else if (n == 6) {
		printf("6\n");
		printf("2 6\n4 2\n4 6\n5 3\n6 4\n6 6\n");
	}
	else if (n == 7)printf("7\n4 2\n4 4\n4 6\n5 5\n6 4\n6 6\n7 3\n");
	else if (n == 8)printf("8\n4 7\n5 2\n6 3\n6 5\n7 4\n8 3\n8 5\n8 7\n");
	else if (n == 9)printf("9\n6 2\n6 4\n6 6\n6 8\n7 5\n8 4\n8 6\n9 3\n9 7\n");
	else if (n == 10)printf("10\n1 1\n1 2\n2 1\n2 2\n3 3\n4 4\n7 7\n8 8\n9 9\n10 10\n");
	else {
		bool flag = false;//n为奇数
		if (n % 2 == 0)
		{
			flag = true;
			n--;
		}

		int ans = 0;
		if ((n - 1) % 6 == 0)
		{
			int t = (n - 1) / 6;
			ans = (t + 1) * 2 * 2 + flag;//偶数加一
			printf("%d\n", ans);
			printf("%d %d\n", 1, 1);
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", 1, 2 * i + 1);
			printf("%d %d\n", 1, n);
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", 1, n - 2 * i);
			//下半部
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", 2 * i + 1, 1);
			printf("%d %d\n", n, 1);
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", n - 2 * i, 1);
			printf("%d %d\n", n, n);

			if (flag == true)
				printf("%d %d\n", n + 1, n + 1);
		}
		else
		{
			int t = (n - 1) / 6;
			ans = (t + 1) * 2 * 2 + 2 + flag;//偶数加一
			printf("%d\n", ans);
			printf("%d %d\n", 1, 1);
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", 1, 2 * i + 1);
			printf("%d %d\n", 1, 2 * t + 3);//多一个
			printf("%d %d\n", 1, n);
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", 1, n - 2 * i);
			//下半部
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", 2 * i + 1, 1);
			printf("%d %d\n", 2 * t + 3, 1);//多一个
			printf("%d %d\n", n, 1);
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", n - 2 * i, 1);
			printf("%d %d\n", n, n);

			if (flag == true)
				printf("%d %d\n", n + 1, n + 1);
		}
	}
}

全部评论
#include<iostream> #include<vector> #include<cmath> #include<bits/stdc++.h> using namespace std; typedef pair<int, int> PII; int test(int x1, int y1, int x2, int y2) { return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2); } int main() { int n, m;//n格子,m数据 cin >> n >> m; vector<PII> v; for (int i = 0; i < m; i++) { int x, y; cin >> x >> y; v.push_back({ x,y }); } cout << v.size() << endl; bool flagg = true;        if(v.size()>n) flagg=false; for (int i = 1; i <= n; i++) { bool flag = false; for (int j = 1; j <= n; j++) { for (int k = 0; k < v.size(); k++) { for (int l = 0; l < v.size(); l++) { if (k == l)continue; if (test(i, j, v[k].first, v[k].second) == test(i, j, v[l].first, v[l].second)) { flag = true; break; } } if (flag == true) break; } } if (flag == false) { flagg = false; break; } } if (flagg) puts("YES"); else puts("NO"); } // 测评的代码
点赞 回复
分享
发布于 2022-05-28 13:51

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务