0
0

0.はじめに

 今年最後のABCということで気合を入れて取り組みました。
 とこらがB問題で大ブレーキ。
 Cも一筋縄でいかなそうだったので、まさかのAだけフィニッシュかと
 諦めかけましたが、Dは簡単で気持ちを取り直せました。
 そのあとはB,Cも時間をかけて解き、時間一杯でA~DをACして
 2023年を締めくくりました。
 レートは+35で半年ぶり2回目の緑コーダとなりました。

1.A - Christmas Present

 BとGを比較しBが大きければバット、Gが大きければグローブを表示
 BatとGloveのスペルを正しく書けるかが一番の間違えポイントな気が
 しました

 https://atcoder.jp/contests/abc334/submissions/48736001

2.B - Christmas Trees

 最初は、RとLの差をMで割り、そこに、Rにツリーが立っていれば
 1を加えてはい終了。と思いましたが、例題3が1差で合いませんでした。

 おそらく、AがLとRの間にある場合とか、ALRが-とか+とかいろいろ
 関係あるのかと、ALRに10**18を足してみたりいろいろしても解けず
 最後は以下の考え方で解きました。

 【考え方】
  ・Aはツリーが立っている場所ならどこでもよい。
 ・AがLの左にあれば、A~R間のツリー数-A~L間のツリー数に
   Aにツリーが立っていたら+1を加えれば答えが求まる。

 上記に従い、新Aを算出してからそれにしたがいツリー数を求め
 無事ACでした。

 解説を見たら、Pythonは4行で解けてたので愕然としました。
 

 https://atcoder.jp/contests/abc334/submissions/48788455

3.C - Socks 2

 初見時は時間がかかりそうなのでスルー。
 戻ってきた時は残20分でしたが、なんとか行けそうかとトライ。

 一見残った靴下全部をどうにかするような問題かと思いきや
 結局両方残ってるのはそのまま使うのが最善なので、リスト内で
 どう組み合わせる問題なんだと気づきました。

 さらに、偶数余っている場合は全部組み合さざるを得ないので
 単純に先頭から組み合わせて差を集計すればOK

 奇数余ってる時は、どの靴下を使わないかを求める問題となりますが
 組み合わせは、靴下を抜く前後でずれるだけなので
 前からの差の累積和と後ろからの差の累積和を求めておき
 抜いた靴下によるずれが生じる前後で累積和を足した値を求め
 その差が一番小さい時が答えとなります。
 アルゴリズムの問題集とかに割とあるパターンですね。

 ギリギリ残り3分でACが取れたので喜びもひとしおでした。

 https://atcoder.jp/contests/abc334/submissions/48796541

4.D - Reindeer and Sleigh

 D問題にしては簡単な気もしましたが、難易度というよりは
 よくある問題なので解きやすかったのかもしれません。

 【考え方】
 ・与えられたトナカイ数で引けるそりの最大数を
  素早く求める
 ・事前準備でそりごとのトナカイ必要数リストを昇順ソートし
   i台目までのそりを引くのに何頭のトナカイが必要かのリストLを
  生成しておく
 ・Q毎にリストLを2分探索し、何台引けるかを求め出力

 苦手だった2分探索もbisectを知ってから、楽になりました。

 https://atcoder.jp/contests/abc334/submissions/48774758

以上

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