TopCoder SRM 504

Result

途中で回答が送信できなくなるというトラブルが発生しNo rated.

Easy

問題

白黒のボールの列が文字列により与えられる。"BWBBBWBBWB"みたいに。
列の先頭からボールを取り、それが白なら
残りの列のボールの色の白黒を全て逆転させる。
黒なら、残りの列を逆順にする。

この操作を列がなくなるまで繰り返すとき、黒いボールは何度引かれるか。

方針

反転をシミュレートするとTLE.(←だと思ったら列の最大の長さは10000だったので違った)
現在の列の両端の位置と、色が反転しているか、向きが反転しているかを持てばO(n)でシミュレートできある。


インクリメントの位置をまちがえて壮絶にハマる。

Medium

問題

白黒のタイルに対して以下の操作をする。
i行目を二文字ずつ見ていき、直下の二列を
BBだったら入れ替え
WWだったらそのまま
BWだったらBBに
WBだったらWWに変える。
出力が与えられたとき、そのような出力を与える入力は何通りあるか求めよ。

方針

ある行を変化させるとき、その一つ前の行はすでに出力のパターンの通りになっているため、
一行ずつの場合の数を掛け算していけば全部の場合の数が求まる。


それで、連続するWWW...もしくはBBB...以外の部分は、下の行の色が出力に影響しないので、BWBWの長さ+1個のマスが自由に決められる。
あとは、下の列の色が実際に合っているかを見る。出力とあってなかったら0通り。


……としたらBWBWBBBBのときに一番右側の色を確かめるコードを忘れてChallenged