列表

详情


NC53584. Forsaken喜欢正方形

描述

        Forsaken特别喜欢正方形,现在他有二维平面的四个整点。如果四个整点可以直接形成一个正方形,输出"wen"。如果可以通过对其中一个点进行一次轻微的调整使得四个整点形成一个正方形,输出“hai xing”,轻微的调整是指如果当前整点坐标为,那么我们可以把这个点变成中的一种。否则如果都不行,输出“wo jue de bu xing”。

输入描述

输入有四行,每行一个二维坐标

输出描述

按题面给定输出。

示例1

输入:

0 0
0 1
1 1
1 0

输出:

wen

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 488K, 提交时间: 2019-11-22 22:20:45

#include<bits/stdc++.h>
#include<vector>
using namespace std;
int d[4][2] = {1,0,0,1,0,-1,-1,0};
int x[10],y[10];
bool check()
{
	vector<int> v;
	for(int i = 0; i < 4; i++)
	for(int j = i + 1;j < 4; j++)
	{
		int k = (x[i] - x[j])*(x[i] - x[j]) +(y[i] - y[j])*(y[i] - y[j]);
		v.push_back(k);
	}
	sort(v.begin(),v.end());
	if(v[0]==v[3]&&v[4]==v[5])return 1;
	return 0;
}
int main()
{
	for(int i = 0; i <4; i++)
	cin>>x[i]>>y[i];
//	for(int j = 1; j <=4; j++)
	if(check())
	{
		puts("wen");
		return 0;
	}
	for(int i = 0; i <4; i++)
	{
		for(int j = 0; j < 4; j++)
		{
			x[i]+=d[j][1],y[i]+=d[j][0];
			if(check())
			{
				puts("hai xing");
				return 0;
			}
			x[i]-=d[j][1],y[i]-=d[j][0];;
		}
	}
	puts("wo jue de bu xing");
	return 0;
}

C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 408K, 提交时间: 2023-03-18 16:12:10

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int x[10], y[10];
int sum[10];
int main()
{
	int m, n,x,y, ans1 = 0, ans2 = 0;
	for (int i = 0; i < 4; i++)
	{
		cin >> x >> y;
		sum[i] = x+y;
	}
	sort(sum, sum + 4);
	if (sum[0] + sum[3] == sum[1] + sum[2])
		cout << "wen";
	else if (abs(sum[0] + sum[3] - sum[1] - sum[2]) == 1)
		cout << "hai xing";
	else
		cout << "wo jue de bu xing";
	return 0;
}

上一题