TCO Round1
すぐ寝ようかと思ったけど,惜しかったからイライラっとしてねれないので更新.
250 EqualizeStrings
二つの文字列を同じにする.各文字を1文字進める/戻るコスト(a -> b, a -> z)は1.最小コストでおなじになる文字列を求めよ.複数ある場合は辞書順最初のを.
- とりあえず文字の小さい方に適当に合わせてみよう.
- tとgの場合真ん中のaにした方がいいのか…
- tとgの真ん中あたりってどう求めよう.偶奇で分ける?う〜ん…
- a-z全部やってみるか.a - > zに変換するときに25とかにしないように気をつけよう.
- サンプル通った.出そう.
500 TwoRegisters
レジスタにX=1,Y=1が入っている.可能なオペレーションは X=X+Y,Y=X+Yのみ.命令数最小ででRにする命令列を求めよ.複数ある(ry
- 後半加速しませんかね.X=1,Y=1からキャッシュmap[1000000][1000000]でやってみるか.
- 余裕のTLE
- 適当にノートに書いて考える.
- 発想を逆転させるのよ,ナルホドくん!
- 逆にやってみよう.X=R,Y=1..RをX=1,Y=1に戻すって考え方で.
- 仮にひとつずつ減っていって,R * R / 2ぐらいかなぁ…間に合わなそうだけどやってみよう.
- 500000ぐらいまでなら答えが出そう.
- チューニングすれば通るか?どこ速くなるかな…
- 文字列処理が明らかに遅いけど,早くする方法が上手く思い浮かばない…
- あれ,gcd(R,i) != 1のときって(1,1)にならなくない?
- xの倍数どおしの差はxの倍数だろう.これで刈れる?
- 1000000が通った!これで勝つる!
チャレンジフェイズ
- 500落ちてると仮定すると,ギリギリ通ってない程度.
- 自分がやったような間違いをしているソースが,勇気を出せ…
出せませんでした.誰かに落とされてました.自分と同じ間違いは他の人のを落とすチャンスなので,とても大事.点数的には落としに行くのが最適戦略だよなぁ.