A.小H的小猫
题意
以 x 轴和 y 轴为墙,原点为墙角,小猫在墙角,给出若干个点,求能否能用篱笆绕着点将小猫围在墙角,求篱笆的最短总长
思路
- 1.在纸上简单画图可以证明,必须要有一个点在 x 轴,一个点在 y 轴上才可以围住。
- 2.而离原点最近的两个点可以围成最短的
- 3.套一下两点距离公式
坑点
- 1.画图证明,不够严谨
- 2.精度
- 3.卡了cin和cout的时间复杂度
代码
#include<bits/stdc++.h>
using namespace std;
struct name
{
double x;
double y;
double len;
}num[1000005];
double func (double a,double b,double c,double d)//求两点距离
{
double dis=sqrt((c-a)*(c-a)+(d-b)*(d-b));
return dis;
}
bool cmp(name a,name b)//自定义结构体排序
{
return a.len<b.len;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%lf%lf",&num[i].x,&num[i].y);
num[i].len=func