概述
https://cn.vjudge.net/problem/Gym-101606B
枚举一个连线,算距离
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll rd(){
ll x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
const int N=100+10;
struct P{
int x,y;
P operator-(P b){
return {x-b.x,y-b.y};
}
double len(){return hypot(x,y);}
}p[N];
double cross(P a,P b){
return a.x*b.y-a.y*b.x;
}
double dist(P p,P a,P b){
return cross(p-a,b-a)/(b-a).len();
}
int main(){
//freopen("in.txt","r",stdin);
int n=rd();
for(int i=0;i<n;i++)
p[i].x=rd(),p[i].y=rd();
double ans=1e100;
for(int i=0;i<n;i++)
for(int j=0;j<i;j++){
//
cout<<"----"<<endl;
double a=1e100,b=1e-100;
for(int k=0;k<n;k++){
a=min(a,dist(p[k],p[i],p[j]));
b=max(b,dist(p[k],p[i],p[j]));
//
cout<<a<<" "<<b<<" "<<k<<endl;
}
ans=min(ans,b-a);
//cout<<i<<" "<<j<<endl;
//cout<<a<<" "<<b<<" "<<ans<<endl;
}
printf("%.6f",ans);
//cout<<ans<<endl;
}
最后
以上就是仁爱鞋子为你收集整理的Gym-101606B_计算几何的全部内容,希望文章能够帮你解决Gym-101606B_计算几何所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复