Codeforces Round #86 (Div. 1 Only)
Result
びみょーん
418(1WA) / (WA) / - / - / -
137位 1834 -> 1873
A. Grammar Lessons
問題
Petya語は以下のような言語である。
- 名詞、動詞、形容詞がある
- すべての単語には性があり、男性か女性かのどちらか
- 男性名詞はetrで終わり女性名詞はetraで終わる
- 男性動詞はinitisで終わり女性動詞はinitesで終わる
- 男性形容詞はlios女性形容詞はlialaで終わる
- 文は、0個以上の形容詞、1個の名詞、0個以上の動詞がこの順に現われるものである
- 文の全ての単語の性は同じである
- 語尾そのものであるような単語も認められる。
与えられた単語の連続が、文か単語1語であるならYESを、そうでないならNOを出力せよ
B. Petr#
問題
長さ2000以下の文字列が与えられる。文字列の連続する部分文字列で、Sbeginで始まりSendで終わるようなものはいくつあるか求めよ。
試行錯誤
Sbeginの位置を全部列挙して、Sendの位置を全部列挙して、
Sbegin以降のSendの数を足していくだけなのでは。
書いてみる。サンプル合わない。
あ、位置が違っても文字列自体が同じなら一つと数えるのか。
じゃあ今までに出てきた文字列を覚えておかないとダメだ。
え、そんなん間に合うの?部分文字列n^2個あるぞ。
set使って書いてみる。aが2000個のケースとか余裕で間に合わない。
うーん。じゃあrolling hashでも使おう。
するとO(1)で部分文字列かの判定ができる。
書いてみる。送信。
WA.
なんだろう。rolling hashの計算間違えたか?直して何回か送ってみるけどWA.
うーん。
何気なくa2000個のケースを実行してみると、答えが1になってる。
a,aa,aaa,aaaa,....が全部同一の文字列に見えてるようだ。
あ、rolling hashがin[i]-'a'だもんそらそうだ。in[i]-'a'+1とかにしてみる。
Pretest Passed.
C. Double Happiness
問題
l以上r以下の素数で、a^2+b^2の形で書けるものの数を求めよ。
l,r≦3*10^8
D. Museum
問題
美術館はn個の部屋がm本の通路でつながった形をしている。
二人が最初a,bの部屋にいて、次のように動く。
- 部屋ごとに定められた確率p[i]で、動かない
- 1-p[i]の確率で、隣接する部屋を等確率で一つ選び移動する
このとき、i番目の部屋で二人が初めて出会う確率を求めよ。
n≦22, 0.01≦p[i]≦0.99
試行錯誤
いかにもDPっぽい感じの問題。
連立方程式が立って解けるんだろうか。
ターン無限の極限を考える。両辺=0になってなにも出てこない。
うーん。
収束するまでまわせばなんか答え出そうな気がする。サイズ小さいし。
コード書いてみる。サンプルすら合わないで時間終了。
System Test
Bが落ちた。
SbeginにSendが完全に含まれる場合を考慮してなかった。
実はそれでもダメで、set
setの代わりに自作のハッシュテーブルを使うと通った。