解析:Diplomatic License 试题来源:Ulm Local 2002 在线测试:POJ 1939

题目:
• 为了尽量减少外交开支,世界各国讨论如下。每一个国家最多只与一个国家保持外交关系是不够的,因为世界上有两个以上的国家,有些国家不能通过(一连串的)外交官进行相互交流。
• 本题设定每个国家最多与另外两个国家保持外交关系。平等对待每个国家是一条不成文的外交惯例。因此,每个国家都与另外两个国家保持外交关系。
• 国际地形学家提出一种适合这一需求的结构。他们将安排国家组成一个圈,使得每个国家都与其左右两个邻国建立外交关系。在现实世界中,一个国家的外交部是设在这个国家的首都。为了简单起见,本题设定,首都的位置是二维平面上的一个点。如果您用直线把保持外交关系的相关国家的外交部联起来,结果就是一个多边形。
• 现在,要为两个国家之间的双边外交会议设定地点。同样,出于外交原因,两国的外交官前往该地点的距离必须相等。为了提高效率,应尽量缩短行驶距离,请您为双边外交会议做好准备。
• 输入
• 输入给出若干测试用例。每个测试用例首先给出数字n,表示涉及n个国家。本题设定n>=3是一个奇数。然后,给出n对x和y坐标,表示外交部的位置。外交部的坐标是绝对值小于1012的整数。国家的排列顺序与它们在输入中出现的顺序相同。此外,在列表中,第一个国家是最后一个国家的邻国。
• 输出
• 对于每个测试用例,首先输出测试用例中国家的数量(=n),然后给出国家之间的双边外交会议地点位置的x和y坐标。输出的会议地点的顺序应与输入给出的顺序相同。从排在最前的两个国家的会议地点开始,一直到排在最后面的两个国家的会议地点,最后输出第n个国家和第一个国家的会议地点。

#include <iostream>
#include <stdio.h>
using namespace std;
struct point{
	long long x,y;
	//double x,y;
};
point p[10000];
void cal(int n,point p[]){
	cout<<n<<" ";
	for(int i=1;i<n;i++){
		printf("%.6f %.6f ",(p[i].x+p[i-1].x)/2.0,(p[i].y+p[i-1].y)/2.0);
	}
	printf("%.6f %.6f\n",(p[n-1].x+p[0].x)/2.0,(p[n-1].y+p[0].y)/2.0);
}
int main()
{
	int n;
	while(cin>>n){
		for(int i=0;i<n;i++)
			cin>>p[i].x>>p[i].y;
		cal(n,p);
	}
	return 0;
}

分析:
1.最短距离其实就是中点距离
2.6位小数点 可以用printf中%.6f输出
3.注意范围大小 坐标可以用long long 也可以double 但是不能用float。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗吧!骚年!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值