Educational Codeforces Round 84

スポンサーリンク

A. Sum of Odd Integers

$1+3+5+7+\cdots$ で超えてたらダメ.超えてなければ末尾を増やせば達成可能.

B. Princesses and Princes

シミュレーションして相手が見つからなかった人のリストに,最後まで採用されることのない人を追加すればよいです.

C. Game with Chips

すべてを $(0,0)$ に集めたあと,全マスを通るようなパスで動かせば目的を達成できます.

D. Infinite Path

順列をサイクル分解しておきます.長さ $n$ のサイクルについて,$\gcd(n,k)$ 項ごとにたどった頂点列が定数列になるかということです.最小解 $k$ は $k\mid n$ を満たすので,それらを全探索します.

E. Count The Blocks

長さ $i$ のブロックをとる場所を決めます.決め方は $n-i+1$ 通りあります.それを固定したとき,両端の文字があるならば違う文字であるという条件がつくので,それで文字列の作り方を数えます.$n-i+1$ のうち両端以外はこの数え上げが同じなのでまとめて計算できます.

F. AND Segments

桁ごとに解きます.区間について「$0$ が存在する」「すべて $1$ である」という $2$ 種の条件が与えられて 01 列を数えることになります.

最後に置いた $0$ の位置をキーとして dp を考えればこれは線形時間で数えられます.

G. Letters and Question Marks

Trie を作り,Aho Corasick 法で $S$ に文字を追加したときの遷移先を計算しておきます.どの頂点を通ったときに価値いくつというのも計算しておきます.

Trie のどこに居るのかと,$S$ の “?” を置き換えた文字集合を持てば,$O(|T|\cdot 2^{\sigma}\cdot |S|)$ の計算量を使えばとりあえず答は求まります.

“?” から次の “?” までの間の文字列による遷移の計算は,使った文字集合に依存しない部分です.これをまとめれば $O(|T||S|+|T|\cdot \sigma \cdot 2^{\sigma})$ 程度の計算量になります.

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