2015年 07月 23日 ( 1 )

 

肉飲み。REV.稼働!! TopCoder SRM663

今日はお昼はカップヌードルシーフードで済ませる。

夜は肉会でした。
f0019846_1933699.jpg


ですが食べられたのはほんのちょっとだけです。
f0019846_19332012.jpg


f0019846_19332758.jpg


f0019846_19333379.jpg

こんなもん。

肉にはあんまり満足できませんでしたが、
オードブル、お酒に満足したので良しとしましょう。1500円ですしね。

帰路のゲーセンではまさかのcross beats REV.が稼働していました。
f0019846_19343291.jpg


ということでやりはじめる。
f0019846_19344797.jpg


取り敢えずI.D. MASTERで97%フルコンULTを取り、UNLIMITED譜面を解禁しました。
f0019846_1935255.jpg


今思えばよく飲んだ状態で解禁しにいけたなーという感じですけどね。

帰路につき、ぎりぎりTopCoderにRegister。

Div2は好調でしたが、酒飲みコーディングなので、HARDを考えている途中に寝ていました。

easyは、アルファベットが与えられえていて、
2次元配列に交互に敷き詰める時、
文字を変える必要のある最小回数を求めよという問題。
こういうのはお決まりで、同じアルファベットを含まない
ab ~ zyまで全パターンをためすことに尽きます。


public class ChessFloor {

public int minimumChanges(String[] floor) {
int min = Integer.MAX_VALUE;
for(int i = 0 ; i < 26 ; i++){
for(int j = 0 ; j < 26 ; j++){
if(i == j)continue;
int count = 0;
for(int k = 0 ; k < floor.length ; k++){
for(int l = 0 ; l < floor[0].length(); l++){
if((k + l) % 2 == 0){
if(floor[k].charAt(l) != (int)(i + 97))count++;
}else{
if(floor[k].charAt(l) != (int)(j + 97))count++;
}
}
}
min = Math.min(min, count);
}
}
return min;
}

}


mediumは、最初の文字の状態からAを末尾に加えるか、文字を反転してBを加えるかの
2パターンの動作を行った時、最終状態に持っていけるかどうかという問題。
最初の文字の状態から見てしまうと、O(2^操作数)となってしまいますが、
最終状態から最初の状態に持っていけるかどうかですと、O(操作数)に決まってしまいます。
逆の動作をやってみるだけです。Aを消す、Bを消して反転する です。
なんて簡単なんでしょう!!

というところに気づいたので、後は書くだけでした。

public class ABBA {

public String canObtain(String initial, String target) {
StringBuilder sb = new StringBuilder();
sb.append(target);

for(int i = target.length() -1 ; i >= 0 ; i--){
if(i + 1 == initial.length()){
if(sb.toString().equals(initial))return "Possible";
return "Impossible";
}else{
if(sb.charAt(i) == 'B'){
sb.delete(i,i+1);
sb.reverse();
}else{
sb.delete(i,i+1);
}
}
}
return "Impossible";
}

}



hardは難しかったですね。

トーナメントでn人いるときと、
2次元配列で相手に勝つか負けるかの表が与えられている時、
トーナメントのありとあらゆるすべての組み合わせにおいて、
優勝する回数がいくつあるか求めよという問題です。
まず規定回数にみたないなら勝てないだろうぐらいは考えましたが、
それ以降は思い浮かばず、気づいたら眠っていました。

challenge phaseでちょっと読んでみるも、何もせずにまた寝ました。
3時半に起きて、ようやくレートがついていました。
25位の部屋内2位で、1076 -> 1166でした。

  by ddrer-yossi | 2015-07-23 23:31 | TopCoder | Comments(0)

SEM SKIN - DESIGN by SEM EXE