AtCoder Beginner Contest 178 参加ログ・感想
初めてAしかできないっていう。本番弱いなぁ。 復習しっかりする。
内容
- Python3でやっている。
- 参加ログ。
- 所感。
- コンテスト中に何を考えたか。
- コンテスト後に解説をみたり、少し整理したりしたくらいの内容。
- 問題の詳細で細かく書こうと思うものは別記事とする。
- E以上はとりあえず現状自力では無理なのでDまで。解けるようになってきたら更新するかも
結果
Aのみ。 Bはa, b, c, dの場合分けを全部やろうとして大失敗。掛け算の結果のmaxをとればよかった。Cもまともに数えようとして大失敗。目的外のものを数えるっていうのが結構パターンとしてありえるけど本番でそれができない・・・。Dは目すら通せなかった。
どう考えたか + α
A - Not
問題タイプ:条件分岐
が0か1で条件分岐
x = int(input()) if x == 0: print(1) else: print(0)
B - Product Max
問題タイプ:最大値
珍しくfor文使う問題じゃなかった。それは制約から判断できる。場合分けをしようすると、複雑になりすぎる。掛け算のパターンとしてありうるのはなので、その最大値が答え。もう少し具体的に考えると、にかをかけた時に それぞれの正負を考えずに大きい方を選択すればよい。についても同様に考えるので、以下のようになる。
a, b, c, d = map(int, input().split()) ans = max(max(a*c, a*d), max(b*c, b*d))
C - Ubiquity
問題タイプ:順列・数え上げ
そのものを数えようとすると、パターンが多すぎて複雑化してダメ。こういう時は、全パターンから条件外のものを引き算すればいい。たとえば、数列にが含まれないような数列の数。同じくも。同時に含まれないものは逆に足す。これは別記事にする。
D - Redistribution
問題タイプ:DP
動的計画法で解く。ちゃんと問題を読めていないので、別記事にする。
おわりに
初めて、Aしかできなかった。Bができなかったのは完全に下手こいた。Cも条件外を数えれば良いだけだったのに気づけなかった。ここら辺も問題を解く量が少ないからかな。まだ200問程度しか解いてないので、もう少し精進を続けよう。