SRM537
2ヶ月ぶりくらいに参加してみました。
- -
275. KingXNewCurrency
問題:A円とB円の組み合わせで払えるすべての金額を、X円とY円の組み合わせで払えるようにしたい。A, B, Xが与えられるとき、Yのとり方は何通り?
- ふおお…なんだか数学ゲーっぽいぞ…。
- まずは、A%X==0 && B%X==0 ならYがいらない子なので-1を返す。
- とりあえず、AB円以上あたりは全部払えてしまいそうな気がする。
- 適当なケースで、それっぽくなってることを確かめる
- Yが大きすぎるといらない子になるので、Y≦max(A, B)で考えてよさそう
- しかし、すべての組み合わせを支払い可能な条件とは一体…。
- しばし考えた後、全探索すれば良い気がした。
- AB円以降は払えそうだし、200^2円くらいまで調べて問題なければ良さそう。
- 1≦Y≦max(A,B)≦200 だし、計算時間も余裕。
- で、問題オープンから提出まで18分。
- 某飲み会で「全探索が好きです」と言ってたとは思えない体たらくである。
- 後に、診断人さんの放送で「A円とB円さえ払えれば十分!」と聞いて衝撃を受けた。
500. KingXMagicSpells
問題:部屋に数字ducks[i]が割り当てられていて、「部屋ごとにspellOne[i]とのxorをとる」「部屋iの数字を部屋spellTwo[i]に移動する」の片方をランダムに選び実行する操作をK回行う。操作後の部屋0の数字の期待値は?
- 期待値にxorとか、なにこれこわい。
- 取りうる数字の数が少ないのでは…と思ったけど、少なくとも2^(K/2)はあってやばい。
- 期待値を持ってたとして、それに上手くxorを考える方法はないのか…。
- [0,1]なら(1-期待値)にするだけで良さそうなんだけど…。
- もしかして、ビットごとに考えれば良いんじゃね?
- xorならビットごとに独立な操作だし、問題なさそうな気がする。
- 組んでみたらサンプルが通ったので、提出した。
- ここまで15分。Easyより早いとは…。
Challenge Phase
- やばそうなケースも思いつかなかったのでまったりしてた。
- -
結果:AC / AC / -- ,+0, 601.54 pt, 59位
レーティング:2374 -> 2411
250で無駄に考え過ぎたのと、時間あったのにHardに歯が立たなかったのが反省点。
そろそろHardと戦えるようになりたいです(´・ω・`)