AtCoderProblems
AtCoderProblems copied to clipboard
AGCのあとの難易度推定ですべてのデータをダウンロードする
AGC-Aの難易度推定が撤退を考慮するようになりましたが、これを正しく動作させるには撤退者のレートが必要で、現状は過去のレーティングをすべて再計算するときにのみ動作するようになっています。
しかし、一般にコンテスト終了後のレーティング計算では最新のコンテストのデータのみを取得するので実はAGC-Aの難易度推定は撤退考慮がなされていません。私が実装しました、申し訳ない。 これは全データを取得して計算すると計算時間が15分以上になり lambda の制約に収まらないことから諦めたもので、たまに思い出したときに再計算して運用でカバーする想定でしたが、そもそもこういう仕様であることをいい忘れていました。
この問題は難易度推定の処理を lambda から別の部分(EC2?)に動かして、AGCの計算のときにだけ全データをダウンロードするように処理を変更すれば治るはずです。
順位表全部 S3 に保存しちゃっていいかもしれないですね
実はユーザーの最新のレーティングがあれば事足りるので、DBを拡張してそれを保存してしまうという手もあります。この方針だと
- 再計算時に取得するデータが最新AGCの順位表と全ユーザーのレーティング一覧だけとなり負荷が軽くなり、
- 現在公式のAPIをproxyしてレーティングを取得している部分を置き換えられる というメリットがありますね。