Codeforces Round 1043

A. Homework

定義通りにシミュレーションします.

B. The Secret Number

$(10^m+1)x=n$ かつ $m\geq 1$ という条件です.$m$ を全探索します.

昇順出力であることに注意.

C2. The Cunning Seller (hard version)

まず $3$ 進法表記で回数最小化しておきます(C1).任意の方法はこの状態から,「$1$ つの $x$ を $3$ つの $x-1$ に置換する」という操作の反復により得られます.

この置換において $x$ が大きいものを選んだ方が,コストが小さくなることが計算すると分かります.よってこの置換を大きな $x$ から順に貪欲に行って,最後にその場合のコストを求めればよいです.

D. From 1 to Infinity

$1, 2, \ldots, M-1$ を全部書いたあと,$M$ を何桁分かとるという形になります.このような $M$ を求めておきます.

あとは $1, 2, \ldots, M-1$ の digit sum の和を求めればよくて,これは桁 dp でできます.この部分を私は桁数ごとに処理しようとしてしまったのですが,不要でした.

E. Arithmetics Competition

適当にタイブレイクしておきます.

結論として次の $3$ 種について可能かを判定し,可能ならば答えに反映させればよいです.

  • 種類ごとの制約を気にせず大きいほうから $z$ 枚とる.
  • 種類 $a$ からちょうど $x$ 枚とる.
  • 種類 $b$ からちょうど $y$ 枚とる.

そうでない方法について,$1$ 枚交換して種類ごとの制約を気にせずとった場合に近づけることが可能だからです.

F. Rada and the Chamomile Valley

次の手順をこなせばよいです.

  • 橋を列挙する.
  • $1\to n$ で必ず通る辺を列挙する.これは,二重辺連結成分を縮約して木にしたときに,木上のパスに対応する橋全体である.
  • 各頂点に対して,最も近い橋を求める.橋のインデックスが小さい方を優先するタイブレイクする必要もある.

ひとつひとつは難しくないですが,全体として作業量多めだと思います.

G. Famous Choreographer

大雑把にいえば,それぞれの場所を点対称中心に選べるかを判定する問題です.

「場所」を固定すると定数 $X,Y$ に対して $(a,b)$ と $(X-a,Y-b)$ がマッチするという形になるので,このような X, Y を全探索すると考えればよいです.

マッチするかという問題は「元のグリッドのある範囲」と「元のグリッドの別の範囲を対称移動したもの」が同一かという問題です.元のグリッドを $180$ 度回転した別のグリッドを用意しておけば,「元のグリッドのある範囲」と「別のグリッドのある範囲」という比較になります.これは($2$ 次元の)Rolling Hash で判定可能です.

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