AtCoder Beginner Contest 185 参加ログ・感想
意味不明なやり方して頭大混乱で、絶対に落としちゃいけないCを落としてしまった・・・
内容
- Python3でやっている。
- 参加ログ。
- 所感。
- コンテスト中に何を考えたか。
- コンテスト後に解説をみたり、少し整理したりしたくらいの内容。
- 問題の詳細で細かく書こうと思うものは別記事とする。
結果
AB完。Cはただのコンビネーションでとにかく11箇所を選ぶだけの計算だったのにわけわからんこと考えて終了なぜパニクるのかもよくわからんし、さらにPythonならオーバーフロー気にせずできる。Dは、マスのリストをソートして、差分を取って、一番小さい値で差分を割って切り上げを足すだけ。あとから考えると結構ラッキー回だったのにできなかったのは実力不足Orz
どう考えたか + α
A - ABC Preparation
問題タイプ:最小値
文意から問題数が最も小さい値が答え。
a = [int(x) for x in input().split()] ans = min(a) print(ans)
B - Smartphone Addiction
問題タイプ:クエリ処理・条件分岐 初期に持っているバッテリー値に対して、
- 以降の変化するバッテリー値 とする。
- - 前回のの値()を引く。(状況:歩いている時間)
- 初回はを引く。
- この時に になったら'No'
- を足す。(状況:カフェで充電)
- この時に になったらとする。(状況:満充電)
- 次のクエリのと引き算するためにを保持しておく。(状況:カフェ出た時間の保持)
なんか、結構条件をきちんと書き上げるだけなんだけど、条件分岐も多くて結構ハマった。
n, m, t = map(int, input().split()) ab = [list(map(int, input().split())) for _ in range(m)] _b = 0 bat = n for a, b in ab: _a = a - _b _b = b - a bat -= _a if bat <= 0: print('No') exit() bat += _b if bat > n: bat = n _b = b if t - _b < bat: print('Yes') else: print('No')
C - Duodecim Ferra
問題タイプ:組み合わせの数え上げ
文意から、とにかく箇所切るところを選ぶ選び方。つまり Pythonの場合はオーバーフローは気にせず。分子と分母を別々に計算して割り算するだけ。
l = int(input()) # l-1から11を選ぶ選び方 a, b = 1, 1 for i in range(1, 12): # 分子 a *= l-i # 分母 b *= i print(a//b)
おわりに
今回は、絶対わからんっていう感じでもなかったのに、解ききれないといった感じ。またRatingは少し下がってしまった。沼はまだ深い・・・。
参考になる書籍
- 問題解決力を鍛える!アルゴリズムとデータ構造
けんちょんさんこと、大槻さんの書籍である、「問題解決力を鍛える!アルゴリズムとデータ構造」 ご本人の記事の中で難易度は、螺旋本ということで初学者でも非常に結構読みやすい!!!(実際に、けんちょんさんの記事はC++に疎い自分でも、その思考プロセスを学べるくらい丁寧に書かれているし、この書籍も非常に読みやすい)どのようなステータスの人にもおすすめの一冊になっている。
問題解決力を鍛える!アルゴリズムとデータ構造 (KS情報科学専門書)
- 作者:大槻 兼資
- 発売日: 2020/10/02
- メディア: 単行本
7章までPythonで章末問題をこなしていっている。