has submitted the 500-point problem for 150.03 points
哎,感覺沒有思考多少時間,但是真的是不熟練麼?邊寫邊想,混到div2中去,真是悲催了。
import java.util.*;
public class AstronomicalRecordsEasy {
static class Ratio{
int x;
int y;
@Override
public int hashCode(){return x;}
@Override
public boolean equals(Object obj){
Ratio second = (Ratio) obj;
return x==second.x&&y==second.y;
}
}
int gcd(int a, int b)
{
while(b != 0)
{
int r = b;
b = a % b;
a = r;
}
return a;
}
public int minimalPlanets(int[] A, int[] B)
{
int min=0;
HashMap<Ratio,Integer> ratioHashSet = new HashMap<Ratio,Integer>();
for(int i=0;i<A.length;i++){
for(int j=0;j<B.length;j++){
int a= A[i];
int b=B[j];
//System.out.println("("+a+","+b+")"+gcd(a,b));
Ratio ratio = new Ratio();
ratio.x = a/gcd(a,b);
ratio.y= b/gcd(a,b);
Integer val = ratioHashSet.get(ratio);
if(val!=null){
ratioHashSet.put(ratio,val+1);
}
else
ratioHashSet.put(ratio,1);
}
}
Collection<Integer> elems = ratioHashSet.values();
Integer count = Collections.max(elems);
min= A.length+B.length-count;
return min;
}
public static void main(String args[]){
AstronomicalRecordsEasy fac = new AstronomicalRecordsEasy();
System.out.println(fac.minimalPlanets(new int[]{2,3,4,5},new int[]{1,2,3,4}));
System.out.println(fac.minimalPlanets(new int[]{100,200,300,400,600,700,800,900},new int[]{6,7,8,9,10,11,12,13,14,15}));
}
}