Uva Anshan Osu!(卡精度)

题意:n个数对,每个数对包含三个值s,x,y,求相邻两数对i,j的sqrt((x[i]-x[j])^2+(y[i]-y[j])^2)/(s[i]-s[j])的最大值;

思路:输入的数要用double;

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
#define inf 0x3f3f3f3f
#define eps 1e-9
int t,n,m;
double mmax;
struct node{
    double s,x,y;
}q[1005];
int cmp(node a,node b){
    return a.s<b.s;
}
int main(){
   int i,j,k;
   double dis,temp;
   scanf("%d",&t);
   while(t--){
     scanf("%d",&n);
     for(i=1;i<=n;i++){
       scanf("%lf%lf%lf",&q[i].s,&q[i].x,&q[i].y);
     }
     sort(q+1,q+n+1,cmp);
     mmax=0;
     for(i=2;i<=n;i++){
        dis=1.0*sqrt((q[i].x-q[i-1].x)*(q[i].x-q[i-1].x)+(q[i].y-q[i-1].y)*(q[i].y-q[i-1].y));
        temp=dis/((q[i].s-q[i-1].s)*1.0);
        if(mmax<temp) mmax=temp;
     }
     printf("%.10f\n",mmax);
   }
   return 0;
}

 

posted @ 2015-09-01 14:56  dominating大树置林  Views(120)  Comments(0)    收藏  举报