■KingdomXCitiesandVillages
問題・解説は,Match Editorial Archiveを参考に.import java.util.*; import java.lang.*; import java.math.*; import java.io.*; public class KingdomXCitiesandVillages { int INF=1<<28; double EPS=1e-9; int m, n; public double determineLength(int[] cx, int[] cy, int[] vx, int[] vy) { m=cx.length; n=vx.length; double sum=0; for(int j=0;j<n;j++){ LinkedList<R> list=new LinkedList<R>(); for(int i=0;i<n;i++){ if(i!=j){ list.add(new R(Math.hypot(vx[j]-vx[i], vy[j]-vy[i]), false)); } } for(int i=0;i<m;i++){ list.add(new R(Math.hypot(vx[j]-cx[i], vy[j]-cy[i]), true)); } R[] rs=list.toArray(new R[0]); Arrays.sort(rs); for(int i=0;i<rs.length;i++){ if(rs[i].isCity){ sum+=rs[i].d/(i+1); break; }else{ sum+=rs[i].d/(i+1)/(i+2); } } } return sum; } class R implements Comparable<R>{ double d; boolean isCity; R(double d, boolean isCity){ this.d=d; this.isCity=isCity; } public int compareTo(R r){ if(d-r.d+EPS<0){ return -1; }else if(d-r.d>0+EPS){ return 1; }else{ return 0; } } } } // Powered by FileEdit // Powered by TZTester 1.01 [25-Feb-2003] // Powered by CodeProcessor
0 件のコメント:
コメントを投稿