AtCoder ABC 162
April 18, 2020
https://atcoder.jp/contests/abc162
ABC162に参加したのでメモ。
A | B | C | D | E | F |
---|---|---|---|---|---|
o | o | o | o | x | x |
A~Dは問題なく解けた。
D
なので、を全探索する方法は間に合わない。を全探索して条件を満たすの個数を効率よく計算する方針で解く。が与えられているとする。のとき、かつを満たすでとなっているものを数えればいい。事前に累積和を求めておくことで、、に含まれるBの個数はで求められる。同様にして、の場合もで計算できる。したがって、全体としてはで答えが求まる。
E
数列をうまく列挙して(代表的な要素を選ぶとかして)数えるという方針、つまり、という方向で考えていた。例えば、がすべて素数であるとき、互いに素であることは明らかなので、となる。素数がK以下にたくさんあれば、それ以外については全探索するとかして計算量を減らせるが、合成数より多いなんてことはないので、うまくいかない。時間ギリギリくらいで、の方向で考えると筋が良さそうということに気づいた。
のとき、これを満たすような数列は、からgを必ず含むようにして要素を選べばいいのだが、約数系包除に慣れておらず、うまく数え上げられなかった。
- という方針で問題を考えている場合は、という方針も検討する