2016-09-16
SRM 686
https://competitiveprogramming.info/topcoder/srm/round/16690/div/1
Div1 Easy (300) BracketSequenceDiv1
問題
- ()と[]だけからなる文字列がある
- 0文字以上削除して、1文字以上にする
- きちんと括弧が閉じるのは何通りか求める
方針
- 半分全列挙
- まず左半分と右半分にわける
- 左半分について、残す・削除するをビットで表す
- 残った部分について、1つずつ処理していく
- 括弧の対応関係がおかしければそこで終了
- 一つ前のものに対応していたらひとつ消す
- 消えない場合は、括弧の種類を2ビットで表して(ビットシフトして)蓄積させていく
- 最終的に残った対応関係を記憶する
- 右半分は、文字列と文字を反転させて、左半分と同じ処理をする
- 同じ値同士のものが結合でき、かけたものが組み合わせの数になる
- 合計が答え
- Passed System Test
- https://github.com/firewood/topcoder/blob/master/srm_6xx/srm_686/BracketSequenceDiv1.cpp
結果
o-- 136.81pt 119th/283 rating 1488 -> 1533 (+45)
一年ぶりに黄色。
半分全列挙なら解けそうだったので愚直に書いた。この方針だとやるだけといえばやるだけだけど、正しく書けたのは良かった。
- 27 https://topcoder-g-hatena-ne-jp.jag-icpc.org/
- 26 https://topcoder-g-hatena-ne-jp.jag-icpc.org/
- 5 https://topcoder-g-hatena-ne-jp.jag-icpc.org
- 4 https://www.google.co.jp/
- 2 https://www.google.co.jp
- 2 https://www.google.com/
- 1 https://topcoder-g-hatena-ne-jp.jag-icpc.org/agw/20130121/1358797526
- 1 http://yandex.ru/clck/jsredir?from=yandex.ru;search;web;;&text=&etext=1187.ZENLHX9Y88ZQHXqeBdKHE6KFlAqW9P21HuAWy4fPKPXR84R-BpaE3rRSaX4116zJ.1b8ed6545c7abe499e7a210d3e03244c73d8fa59&uuid=&state=_BLhILn4SxNIvvL0W45KSic66uCIg23qh8iRG98qeIXmeppkgUc0YG-XUIUpxKrkaoPisARVvB8&data=UlNrNmk5WktYejR0eWJFYk1LdmtxdlRKMFR1VURjVGI3TXFzUDBVRndnQU1zU0FmUWJKenBhaUFDb1Q1OEJQWmhBMWJwOTlIUzdYQWZPSVRGQ3A1N2E0U1ExOGNIUFEtZ3Q0VnpiM0JRRVA1LUhLRXQ1dVY2R3pEcGo4OUdKR3A&b64e=2&sign=c55d35a37e2bfc5daccf7ed6b4300ce5&keyno=0&cst=AiuY0DBWFJ7IXge4WdYJQSaYtyyri96FFgpfhmTjXqhhMjBWUFwbw-mX-zB3OCq9-V66vsZEVlMX-pt9lD1LrolR1WVlhxYh0MZrZ1qodvcgbHDhS8wssLJIK_80CS8bGVJ1iFsfE9WoieTrHw50DelMIrfXRPPb&ref=orjY4mGPRjk5boDnW0uvlrrd71vZw9kp5uQozpMtKCXN8sJ9bCiuTuyNhB9mMJwJ_fBYVGGdNhPyhzOFGBSS17yo1EaGi8-NPFWAvOGMmxGUWBuVFbTZiF3Ngi0HM6tI&l10n=ru&cts=1474667672606&mc=4.78344599871
- 1 https://topcoder-g-hatena-ne-jp.jag-icpc.org/keyword/2016-09-25
- 1 https://www.google.lk/