■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 件のコメント:
コメントを投稿