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