freee プログラミングコンテスト2023(AtCoder Beginner Contest 310)をPythonで解く

投稿日: 

Atcoder Python

B!
Daniel AgreloによるPixabay(https://pixabay.com/)からの画像

こんにちは, Shinoryoです.

今回はfreee プログラミングコンテスト2023(AtCoder Beginner Contest 310)を, Pythonで解いてみた結果を書き連ねていこうと思います.

A - Order Something Else

AtCoderドリンクの値段は, 次の2パターンです.

  • 割引券を使わなかった場合:$P$円
  • 割引券を使った場合:$Q + \min_{i = 1, \ldots, N} D_i$円

したがって, それらのうち安い方を出力すればよいです.

B - Strictly Superior

全ての$i$, $j$の組み合わせに対して, 一方が一方の上位互換になっているかを確かめればよいです. 下記の例のようにset()を使うと高速ですが, list()を使っても十分ACできると思います.

C - Reversible

棒を順番に見ていき, 今までに見たどの棒とも同じでない棒を見るたびにカウンタの値を$1$増やすことで, そのカウンタが答えになります.

「今までに見たどの棒とも同じでない棒」であるかを判断するには, 今までに見た棒を記録しておけば良いです. list()で格納してしまうと全体の計算量が$O(N^2)$となりTLEですが, set()で格納すれば全体の計算量が$O(N)$となりACです.

D - Peaceful Teams

順番に選手をチームに加えていく, またはその選手だけで新たなチームを作るということを順に行っていくことで, 全探索すればよいです. うまくset()を使うことで高速化できます.

E以降

E以降は私の能力不足故に省略いたします.

参考にしたサイト等

Search

About Me

自分の写真
理系大学生でした. Bloggerを利用して発信を行っています.

Labels