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; }

浙公网安备 33010602011771号