TopCoder SRM680 (Div2)

今日は家で仕事。
19時に上がり、ほどほどにジムへ。
筋トレとランニングをこなした後はゲーセン。
混んでいたのでほとんど収穫なし。Pフリーで殴りきれない…。

帰宅した後はTopCoder SRM680に参戦。

easyは、文字列があって、同じ文字じゃなくてなるべく距離が遠いものを出力する問題。
文字数長が小さいので全部調べて最大のものを求めるだけ。初期値は-1で。

public class BearPair {

public int bigDistance(String s) {
int max = -1;
for(int i = 0 ; i < s.length(); i++){
for(int j = i + 1 ; j < s.length(); j++){
if(s.charAt(i) != s.charAt(j))max = Math.max(max, (j - i));
}
}
return max;
}

}



mediumは、最低限atLeast[i]だけ離れている場所が良いという客がいて、
客は順番にやってくる。
客との間にd以上スペースがないとダメな場合の座り位置を出力する問題。

範囲外であれば、ある客との位置+dの位置を新たに候補にする。
その位置が他の客の範囲内であればcontinueしていく。


import java.util.ArrayList;
import java.util.Collections;

public class BearChairs {

public int[] findPositions(int[] atLeast, int d) {
int[] num = new int[atLeast.length];
ArrayList al = new ArrayList();
for(int i = 0 ; i < atLeast.length ; i++){
int kouho = atLeast[i];
for(int j = 0 ; j < al.size() ; j++){
if(al.get(j) <= kouho - d || kouho + d <= al.get(j)){
continue;
}else if(kouho - d < al.get(j) || kouho + d > al.get(j)){
kouho = al.get(j) + d;
}
}

num[i] = kouho;
al.add(kouho);
Collections.sort(al);
}
return num;
}

}



hardは、いつもどおりよくわかんなかったので寝ました。
999 -> 1094と全体36位。順当に戻していく。

  by ddrer-yossi | 2016-01-28 23:48 | TopCoder

<< 家仕事。弐寺多数収穫 アルストロメリア(A)をフルコン。 >>

SEM SKIN - DESIGN by SEM EXE