Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】AtCoder Beginner Contest 376(Promotion of AtCoder Career Design DAY) - 参加記 | 茶コーダーが解くAtCoder

atcoder.jp

コンテスト時間: 2024-10-19(土) 21:00 ~ 2024-10-19(土) 22:40 (100分)

A - Candy Button

Difficulty: 19

解答時間: 3:56


  • あるボタンを押すと飴を1つもらえるが、前回飴をもらってからの経過時間が  C 秒未満である場合はもらえない。このボタンを今から  T_i \: (i = 1, 2, \cdots, N) 秒後に押すことにするとき、何個の飴をもらうことができるか求めよ。
  • まず、  T_1 秒後には必ずもらうことができる。
  • それ以降は、前回飴をもらった時間を  \mathrm{time} としておき、  T_i - \mathrm{time} \geq C のときに限り、飴をもらうことができる。このとき、  \mathrm{time} = T_i としておくのを忘れずに。

B - Hands on Ring (Easy)

Difficulty: 290

解答時間: 27:14


  •  1 から  N の番号のついた  N 個のパーツが時計回りに円形に並んだリングがあり、初め左手はパーツ  1 に、右手はパーツ  2 に置かれている。ここで、1回で「片方の手を今握っているパーツに隣接するいずれかのパーツに移動する。ただし、移動先にもう一方の手がない場合に限る。」という操作が行えるものとする。このとき、以下の形式の指示  Q 個に順番に従わなければならない。すべての指示に従うために必要な操作回数の合計の最小値を求めよ。
    • 操作を0回以上行うことで、  H_iLならば左手、Rならば右手が、パーツ  T_i を握っている状態にする。このとき、  H_i によって指定された手ではない方の手を動かしてはならない。
  • 以下、パーツの番号は 0-indexed とする。  L, R, T_i の位置関係は次の6通り存在する。
    1.  L \lt T_i \lt R
    2.  L \lt R \lt T_i
    3.  T_i \lt L \lt R
    4.  T_i \lt R \lt L
    5.  R \lt L \lt T_i
    6.  R \lt T_i \lt L
  • このとき、左手を動かすときは 2, 4 のとき反時計回りに、それ以外は時計回りに動かす必要が生じる。現在左手が置かれているパーツの番号を  l とすると、指示を満たすために必要な操作回数はそれぞれ、
    • 2 のとき、  l + N - T_i
    • 4 のとき、  T_i + N - l
    • それ以外のとき、  |T_i -l|
  • あとはこれを右手を動かすときについても同様に考えればよい。

C - Prepare Another Box

Difficulty: 366


  •  N 個のおもちゃと  N-1 個の箱があり、おもちゃ  i \: (1\leq i\leq N) の大きさは  A_i 、箱  i \: (1\leq i\leq N-1) の大きさは  B_i である。今から以下の操作を順に行うことを考える。このとき、操作2を実行できるような  x の値が存在するか判定し、存在するならばその最小値を求めよ。
    • 任意の正整数  x を選んで、大きさ  x の箱を1つ購入する。
    •  N 個のおもちゃそれぞれを、元々あった箱と新しく購入した箱を合わせた  N 個の箱のいずれかに入れる。ただし、各おもちゃはそのおもちゃの大きさ以上の大きさを持つ箱にしか入れることはできず、また1つの箱に2つ以上のおもちゃを入れることもできない。
  • 「ある条件を満たす  x の最小値」が聞かれているので、二分探索が使えそう。
  • ただ、追加した箱が条件を満たすかどうかを判定するのに難しく考えすぎてた結果、無事バグらせて撃沈という結果に。

結果

Performance: 452

Rating: 598 → 584 (-14)

atcoder.jp