ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

战争尾声

2021-01-30 18:58:38  阅读:188  来源: 互联网

标签:200 战争 leq 尾声 mathit int num 坐标


题目
牛客网考题

“当攻占主城成功的信号弹与敌人的子弹同时射出,信号弹照亮了民众对于和平的渴望与对于未来美好生活的所有畅想,而子弹却击碎了她下去的信念与存在的全部意义。”

“烟花易冷,少佐的生命也是如此,在温暖的光辉中照亮了她那唯有死亡同行的路,而这温柔的光芒也在这满是硝烟的空气中迅速降温、下落,熄灭,直至落回冰冷坚硬的地面上。”

——前言(略过不影响答题)

战火纷飞了二十多年的大陆终于看到了和平的曙光,
在昂榭尔王国、阿斯特赖亚国等几个大国的牵头下,大陆上的所有国家决定握手言和,停战修养。
作为战争结束的标志,需要所有国家签订一个停战协议。
一份完整的停战协议已经由我们的自动手记人偶 薇尔莉特 起草好了,
现在需要各个国家同时在同一个地点签订该停战协议。
将整块大陆放在平面直角坐标系中,则大陆的西南角的坐标为 \text{ ( 1 , 1 ) } ( 1 , 1 ) ,东北角的坐标为\text{ ( 200 , 200 ) } ( 200 , 200 ) 。现将给出 \mathit{n}n 个国家的坐标,第 \mathit{i}i 个国家的坐标为 ( x_i , y_i )(x i,y i) ( 1 \leq i \leq n , 1 \leq x_i \leq 200 , 1 \leq y_i \leq 200,x_i\in Z,y_i\in Z)(1≤i≤n,1≤x i≤200,1≤y i≤200,x i∈Z,y i∈Z)为了和平签订停战协议,你现在需要在这片大陆上,找到一个点,保证该点到所有国家的距离都 “相等”。PS:答案坐标均为整数PS:相等:两段距离差值的绝对值小于 10^{-4}10 −4。如果大陆上找不到该点,请输出 War is cruel.

Input

第一行,一个正整数 \mathit{n}n ,表示有 \mathit{n}n 个国家将会签订停战协议
接下来 n 行,每行两个正整数,第 \mathit{i}i 行表示第 \mathit{i}i 个国家的坐标 ( x_i , y_i )(x i,y i ) ,以空格隔开。

Output

第一行,输出满足条件的点的坐标,以空格隔开如果满足条件的点不止一个,请优先输出横坐标 \mathit{x}x 较小的点,如果横坐标 \mathit{x}x 相等,优先输出纵坐标 \mathit{y}y 较小的点。如果满足条件的点不存在,请输出 War is cruel.
PS:答案坐标均为整数

Sample Input
2
1 2
2 1

Sample Output
1 1

Sample Input
5
3 1
2 3
3 5
4 4
6 5

Sample Output
War is cruel.

备注:
数据范围:
对于10%的数据 n = 2 n=2 。

对于40%的数据保证 n \leq 10 n≤10 。
对于80%的数据保证 n \leq 50 n≤50 。
对于100%的数据保证所有 2 \leq n \leq 200 , 1 \leq x_i \leq 200 , 1 \leq y_i \leq 200,x_i\in Z,y_i\in Z2≤n≤200,1≤x
i≤200,1≤y i≤200,x i∈Z,y i∈Z。另外,对于60%的数据保证有解。PS:答案坐标均为整数

##两点间距离公式|AB|=sqrt((x2-x1)2+(y2-y1)2)

代码

#include<bits/stdc++.h>
using namespace std;
int num[3][10005];//存储各国家的坐标(x,y) 
int ans=0,n=0;
double sum;
int maxn=1000000,minn=-1;
bool check(int a,int b)
{
	for(int i=0;i<n-1;i++)
	{//a的值等于i的值,b的值等于j的值 
		ans=(a-num[0][i])*(a-num[0][i])+(b-num[1][i])*(b-num[1][i]);
		if(ans!=(a-num[0][i+1])*(a-num[0][i+1])+(b-num[1][i+1])*(b-num[1][i+1]))
		{
			return 0;//不符合条件 
		}
		//maxn=max(maxn,ans);
		//minn=min(minn,ans);
	}
	   return 1;//符合条件	
}
int main()
{
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d%d",&num[0][i],&num[1][i]);
	}
	for(int i=1;i<=200;i++)
	{
		for(int j=1;j<=200;j++)
		{
			if(check(i,j)==1)
			{
				printf("%d %d\n",i,j);
				return 0;
			}
		}
	}
	printf("War is cruel.");
	return 0;
} 

该代码由李柯辰所写

标签:200,战争,leq,尾声,mathit,int,num,坐标
来源: https://blog.csdn.net/weixin_53900539/article/details/113444430

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有