解くに至ったもの(15問)
ABC:040B,C
ARC:008A/009A/010A/011A/012A/014A/015A/016A/017A/018A/058A/073A
DPまとめコン:A
ARC009A
int型は切り捨て
ARC010A
昨日の続き的な
改行入力
①L = [input() for _ in range(回数)]
②L = []
for j in range(M):
L.append([int(i) for i in input().split()])
print(L)
のどちらか好きな方を まあ①の方が楽 それはそう
☆②はsplit()をつけないと、例えば
10
20
30
という入力を受け取ったとき、[[1,0],[2,0],[3,0]]と入ってしまうので注意
スペース入力
10 20 30 を[10,20,30]と受け取ってほしくて、
L = input().split()とやると['10','20','30']と受け取られる。要素はあくまで文字列。
数値を要素にしたいときは、list(map(適用したい関数,リスト名))としてやればよい。
例えば、
L = list(map(int,input().split()))
などとすればL=[10,20,30]となる。(ここではリスト名の所にinput().split()を入れた。これが楽。)floatでもよい。
ARC012A
日曜か土曜で判定してほしくて
if D == 'Sunday' or 'Saturday'ってやったらダメだった
D == 'Sunday' or D == 'Saturday'としないとダメな模様
ARC018A
小数点はint()じゃなくてfloat()だった 完全に忘れてた
ARC058A
バチコリ時間かかった 5WA食らう インデントには気を付ける
ABC040B
思いつかなくて答えを見た 与えられた数nに対して、その中で作れる長方形の縦横の長さの絶対値abs(w-h)と、あまったタイルn-w*hの合計をできるだけ少なくする問題
全探索もどきが一番いいらしい 幅wを1~sqrt(n)、高さをw~n//wの範囲で取ってforで回す 計算量はn/1+n/2+......=nlognらしく、n <= 10^5なら間に合うとのこと すごいね
解けなかったもの
ABC:027B
ARC:013A
ABC027B
解決しました 原因は1==1.0が成り立つかどうかの理解が甘かったこと
12行目
if people//(c+1) != K
という記述、最初はif int(people//(c+1)) != Kと書いていたのですが、いずれにせよ切り捨てを行ったことで、例えば3 0 0と人数が与えられたときに2つ目の島を数えた時点で3//2==1→橋の本数が1本とカウントされてしまう というバグが発生していた模様
ここをダブルスラッシュではなくスラッシュに変えるとうまくいきました 結局1==1.0は成り立つというのが今回の結論 taiyoslimeありがとう