競プロ日和

競技プログラミングを楽しむ

C

ABC118 C

問題 最大公約数を求めればよい。 ただし、AtCoderのpython3の実行環境は3.4.3のため、math.gcdが使えない。 そのため、fractions.gcdを使う。 from fractions import gcd n = int(input()) A = list(map(int, input().split())) ans = A[0] for a in A[1:]:…

みんなのプロコン 2019 C

問題 選べるパターンは2つ ①ビスケットを1枚増やす ②ビスケットA枚をB枚に交換する(2回分の操作) ②の場合は、得られるのは次の3パターン B - A < 2 この場合は①よりも少なくなるので①を選択 B - A == 2 この場合は①と同じになるので①を選択 B - A > 2 …

キーエンス プログラミング コンテスト 2019 C - Exam and Wizard

問題 解けなかった。 ヒープを使うのかと思い考えてみたが、解法が思いつかなかった。 解答PDFと動画を見て解き方を理解した。 まず、AよりもBが大きい場合は答えが存在しないため、-1を出力。 次に、配列A-Bの要素のパターンは3つ。 ①マイナス(minus) : A …

AtCoder Educational DP Contest / DP まとめコンテスト C - Vacation

dp_c 動的計画法 現時点をiとし、aについて考える。 現在のa[i]を最大にするには、 a[i]に1つ前のa以外(b、またはcのうち大きいほう)を合計すればいい。 b,cについても同様。 そして、最終的に最大なものを出力。

AtCoder Beginner Contest 113 C - ID

abc113_c ①配列liに(県P, Y年,番号)を格納。 ②配列liをソート。 ③配列ansのa番にPとcntを格納。 ・a番はliの3番目の要素 ・cntは、li[i - 1]とli[i]が同じならばcnt+1、異なるならば1 ・Pとcntをそれぞれ0埋めの6桁の文字列にし、それを合わせて配列ansに…

atcoder Tenka1 Programmer Beginner Contest C - Align

qupc2018_c 解けなかったので、解答PDFと動画を見て理解した。 まずは配列を昇順ソートする。 そして、配列の長さなどの各パターンに合わせてそれぞれの要素に重みをつける。 1)配列の長さが偶数 2パターンあるのだが、わかりやすいので①のみを考える。 a.…