2012年3月24日土曜日

TopCoder SRM347 Div2 250Pts

このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題についておおまかに説明する。

あなたは可能な限り安い選択で新しい車を買いたいと思っている。ただ、初期購入費用は車にかける費用の一部であり、税金や燃費も車選びの決定に関係づけたいと思っている。問題ではcars[]という車のモデルの特徴が与えられ、1年に走る距離を表すannualDistanceが与えられる。えらんだ車に対し、購入費用は1度だけ、税金は年に1度、燃料にかかる費用は「fuelPrice*走った距離/燃費」で与えられる。yearsだけ年数が経過したときに、最小のコストになる車を選び、そのときの所有にかかる維持費を実数型で返せ。cars[]は"<購入初期費用> <税金> <燃費>"で与えられる。

私の解答はこちら。

public class CarBuyer {

 public double lowestCost(String[] cars, int fuelPrice, int annualDistance, int years) {
  double ret = Double.MAX_VALUE;
  for( int i=0 ; i<cars.length ; i++ ){
   String[] vals = cars[i].split(" ");
   int purchaseCost = Integer.parseInt(vals[0]); // 初期購入費用
   int tax = Integer.parseInt(vals[1]); // 税金
   int fuelEfficiency = Integer.parseInt(vals[2]); // 燃費
   double totalCost = (double)purchaseCost + (double)tax * years + 
    (double)fuelPrice * annualDistance * years / fuelEfficiency;
   ret = Math.min(ret, totalCost);
  }
  return ret;
 }

}

得点は240.69/250、中央値は約193点。1回のsubmitでシステムテストクリア。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計