Educational Codeforces Round 37 - F. SUM and REPLACE

問題リンク

解法

約数の個数はかなり速いスピードで減っていって最終的に 1 or 2になる(1は最初から1の場合)

ということで各 a _ {i}において、何百回約数の個数に変更しても2のままで無駄なことをしてるだけなのである。

よってstd::setなどを使って、2より大きい a _ {i}のindexを管理してそれだけを見るようにしよう。

あとはBITを更新していくだけである

提出コード

codeforces.com

まとめ

解法そのものは早かったのだけど、std::setをやらずにうまく右にいくの更新しようとしたらなかなか大変だった

std::setほんとつよいね f:id:jupiro:20200505044714p:plain