Educational Codeforces Round 50

スポンサーリンク

A. Function Height

ceil

B. Diagonal Walking v.2

最適解において軸方向の移動は $2$ 回以下としてよいです.$3$ 回は対角 $2$ 回と軸方向 $1$ 回に置き換えられるからです.この制約下で,$k+x$ や $k+y$ の偶奇から軸方向の移動回数が決定できます.

C. Classy Numbers

桁 dp でできます.

D. Vasya and Arrays

累積和を見れば,先頭と末尾の削除は禁止で他の項を自由に削除できるというものです.

よって最長共通部分列をとれればよいですが,累積和が単調増加になっているので単に共通要素を数えればよいです.

E. Covered Points

各線分上の格子点を数えて足しておきます.そこから同じ点を複数回通る場合の補正を行いますが,このような点の候補は 2 線分の交点の個数 $O(n^2)$ しかありません.

F. Relatively Prime Powers

ある $2\leq k$ に対して $k$ 乗数になるというのが数えるべきものです.$k<60$ で数えればよく,$k$ 乗数を数えたあと倍数関係に関するメビウス変換をすればよいです.

G. Sources and Sinks

各 s, t 間の reachability だけが問題なのでこれらを計算しておきます.

source の集合 $S$ に対して $f(S)$ をある source $s\in S$ から到達可能な $t$ 全体とします.$|S|\geq f(S)$ となる $S$ が空と全体以外にあるとそこから強連結成分を作れてしまうので矛盾です.そうでなければ必ず全体が強連結になります.全体ではない強連結成分があったとしてその source 全体を $S$ とすれば十分性が分かります.

CodeForces
スポンサーリンク
シェアする
maspyをフォローする
maspyのHP
タイトルとURLをコピーしました