TopCoder SRM558
ある方の改変バージョンを適用する作業に。
一応ノートもやっておいた。
昼間はネスペの勉強をし、夜に友人と待ち合わせして、TOD。
easy
石の配置とコスト、利益が与えられていて、石を置くとコストを支払う。
また、囲んでいるか、石を置いていれば、利益がもらえる。
囲む条件は、左右上下に石があること。端っこの場合は端に石があるとして考えてよい。
コストを計算せよ。
実はこのとき、EclipseCoderの動作が不十分で、動かないことが起こりました。
なんと、根幹のJavaを消去してしまっていたが故の失敗でした。
これで、15分ほど時間を取ってしまうひどい結果に。mediumとhardは結局無理でしたが。
public class SurroundingGameEasy {
public int score(String[] cost, String[] benefit, String[] stone) {
int sum = 0;
for(int i = 0 ; i < cost.length ; i++){
for(int j = 0 ; j < cost[0].length() ; j++){
if(stone[i].charAt(j) == 'o'){
sum -= cost[i].charAt(j)-48;
sum += benefit[i].charAt(j)-48;
}else{
int count = 0;
boolean flag = true;
if(i-1 >= 0){
if(stone[i-1].charAt(j) == '.')flag = false;
}
if(i+1 < cost.length){
if(stone[i+1].charAt(j) == '.')flag = false;
}
if(j-1 >= 0){
if(stone[i].charAt(j-1) == '.')flag = false;
}
if(j+1 < cost[0].length()){
if(stone[i].charAt(j+1) == '.')flag = false;
}
if(flag){
sum += benefit[i].charAt(j)-48;
}
}
}
}
return sum;
}
}
medium
R,G,Bのスタンプが与えられていて、希望通りに押したいが、
あいにく長さLのスタンプしか使えない。
そのコストは長さ分L*StampCost。長さは変更できない。
PushCostで押した時のコストを払う。
典型的なDPらしい。
hard
猫とウサギが一直線上で勝負する。
黒いステップにコマを載せ、隣接した白い部分を1つ以上黒にする。
この動作を繰り返し、移動できなくなったほうが負けである。
必勝法があるので、どちらが勝つか考えようという問題。
帰宅後は、少しゲーセンへ。
となりでカップルがREDJackpotを出していたので、
こっちもなんか出すぞーってやっていたらBlue+300。
これはフラグかと思い、終了間際にJackpot。よかったー。
by ddrer-yossi | 2012-10-19 23:50 | TopCoder