0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ABC382回答メモ

Last updated at Posted at 2024-12-02

0.はじめに

 先週はまさかの金曜開催で参加できず、1週ぶりの参戦。
 さらに二泊三日の旅行から帰宅して2時間後の参戦と
 ヘロヘロの状態。
 と、言い訳しながらで、ABC問題を解くのがやっとでした。
 C問題も解けたとはいえ、ダメもとで時間かかりそうな手法を取ったり
 2分探索の大小比較を誤ったりして3回失敗し、タイムロス。
 レートは-8と下がってしまいました。

1.A - Daily Cookie

 制約により、@がD以上ある事がわかっているので
 S内の”.”を数え、そこにDを加えることで空き箱の数がわかりました。

 https://atcoder.jp/contests/abc382/submissions/60303224

2.B - Daily Cookie 2

 Aよりちょっと難易度の高い問題。
 とはいえ、B問題。
 Sをリスト化して読み込み、後ろから見ていき、D枚分”@”を”.”に
 変換し、最後にSを結合して出力。

 https://atcoder.jp/contests/abc382/submissions/60308872

3.C - Kaiten Sushi

 なかなかてこずった問題。
 単純にBの寿司をAの人の頭から食べられるか
 シミュレーションした場合、TLE18と半分以上時間切れ。
 いい感じの表を作り、食べられる人を二分探索する方針を決める。

 【考え方】
  ・美食度1の人が先頭にいたら全部この人が食べる
  ・同じ美食度の人がいたら前に座っている人が食べる
  といったことから、以下の方針を取る。
  1)Aのリストを元に、美食度毎の先頭の人を辞書D(キー:美食度、値:順番)に格納
  2)Dを元に、リストL(L[i]=[美食度,順番]、美食度の昇順)
  3)Lを先頭から見ていき、L[i][1]に、L[i][1]とL[i-1][1]の小さいほうをセットする
   (美食度5の前に、美食度1の人がいた場合、先に食べられてしまう為)
   リストLには、美食度毎に何番目の人が食べるかがセットされる
  4)リストBを先頭から見ていき、2分探索で、B[i]以上の美食度の料理を食べる人を
   検索し、その値を出力
 2分探索による時間短縮のお手本のような問題でした。
 と思ったら、解説を見たらリストLを美食度毎につくれば2分探索いらない事に気づき
 たしかにーとなりました。

 https://atcoder.jp/contests/abc382/submissions/60342216

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?