Codeforces Round 618

スポンサーリンク

A. Anu Has a Function

$f$ は差集合です.$a_2$ 以降の順序は関係ないので候補となる値は $n$ 通りにできて,全部計算すればよいです.

B. Aerodynamic

$T$ は $P, -P$ の Minkowski Sum です.有向辺のベクトルの多重集合を $S$ として,$S\cup (-S) = S\cup S$ という条件になるため $S=-S$ つまり $P$ が点対称かどうかを判定します.

C. Water Balance

累積和の折れ線,つまり $(i, \sum_{j<i}a_j)$ を結ぶ折線を考えます.できる操作は区間における折れ線を線分に取り換えるものです.下側凸包が最適解を与えます.

D. Around the World

まず頂点 $1$ まわりの辺を除いておき,各連結成分のサイクル空間を求めておきます.

サイクル長に関する制約より,頂点 $1$ から各成分に接続する辺は高々 2 つで,可能な選択は高々 $4$ 通りで,それぞれの場合にサイクル空間にどのような生成元が追加されるかを計算しておきます.

各成分についての選択肢を順に決めていく dp ができます.dp のキーはその時点でのサイクル空間(または非自明なサイクルが出来たらそのことを示す何か)です.予めベクトル空間を列挙しておき,その和の結果を計算しておけば,すべての計算は十分高速に行えます.

E. So Mean

簡単のため $n$ は十分大きいとします.

まず $n-1$ 要素をすべて聞くことで,$1$ または $n$ である位置が分かります($n$ が偶数であることを利用).どちらかは最後まで区別不可能なので適切に決めてしまいます.

残り $[2,n-1]$ の部分について同じことをすれば,$2$ または $n-1$ である位置が分かります.$n$ が偶数であることから,$\{1,x\}$ のタイプの質問によりこれらを区別可能です.繰り返します.

  • $5n$ 回の質問で,$1,2,3,4,5,n-4,n-3,n-2,n-1,n$ の位置が決定できる.

次に,$2\leq m\leq 9, 0\leq k\leq m$ に対して次が分かります:

  • $1$ 回の要素である要素が $\pmod{m}$ で $k$ であるかが質問できる.

これは,$\{1,2,3,4,5,n-4,n-3,n-2,n-1,n\}$ の $m-1$ 元部分集合で,$\pmod{m}$ で $m-k$ と等しいものがとれるからです.あとは次のようにやっていきます.

  • $3n$ 回の質問で,全要素を $\pmod{8}$ で特定できる.
    • $1$ 回の質問で $\pmod{2}$ で決まる.
    • このとき $\pmod{4}$ で $2$ 通りしか候補がないので,$1$ 回の質問で $\pmod{4}$ で決まる.
    • 同様にもう $1$ 回で $\pmod{8}$ で決まる
  • $4n$ 回の質問で,全要素を $\pomd{9}$ で特定できる.やはり $\pmod{3}, \pmod{9}$ の順に聞く.
  • $3.5n$ 回の質問で,全要素を $\pmod{7}$ で特定できる.要素ごとに $6$ 回かかりそうであるが,見つかったところで打ち切ることにすると,要素の $\pmod{7}$ での値は一様なのでこのような回数になる.

ここまで $15.5n$ 回程度で全要素を $\pmod{504}$ で特定できました.

これで,各要素は高々 $2$ 択にしぼられています.最後にこれらについて $\pmod{5}$ がある候補と一致しているかを聞くと値が定まります.全体で $16.5n$ 回以下で解けていると思います.

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