ABC092(バーチャル):水色競プロerの復習
3連休最終日、今日も朝から過去ABCで復習です。
〇コンテスト名:ABC092
〇配点:不明
〇制限時間100分(A~Dまでの4問の時代のコンテスト)
〇今回の方針
休みの朝なのでコーヒー片手に気楽にいきましょう。
コンテスト開始!
A - Traveling Budget
バスと電車で旅行する。
バスはA円orB円
電車はC円orD円
最安値を求めよ。
AとBの安いほうとCとDの安いほうを足せばよいですね。
適当にやってしまい、効率の悪いコードになってしまいました。
リストに入れてソートして・・
Bus=[] Train=[] for i in range(2): b=int(input()) Bus.append(b) for i in range(2): t=int(input()) Train.append(t) Bus.sort() Train.sort() print(Bus[0] + Train[0])
2:32 AC
普通にA,B,C,Dをintで受けて、min(A,B)+min(C,D)を出力すべきでしょう。
B - Chocolate
N人がいて、D日間の間にそれぞれ1+Ai日目にチョコレートを食べる。
最後にX個のチョコレートが残っていた。
最初にチョコレートはいくつあったか。
100人で100日まで。最大でも10^4オーダーなので全探索決定。
ansを用意して、2重ループ。
1+A日ごとにans+=1
1+A>Dになったら終了。
これをN人分繰り返し、最後にansにXを足しましょう。
N = int(input()) D,X = map(int,input().split()) ans=0 for i in range(N): cnt=0 A=int(input()) for j in range(101): if 1+A*j>D: break else: cnt+=1 ans += cnt print(ans + X)
6:29 AC
C - Traveling Plan
x座標上のN個の点を順に訪れる。
移動コストは|a-b|円
各点を訪れなかった場合の合計移動コストを求めよ。
全部の点を訪れるコストを最初に求めておき、
各点(A)を訪れなかった場合は、
全点コスト-|Ai-A(i-1)|-|A(i+1)-Ai|+|A(i+1)-A(i-1)|ですね。
N=int(input()) X = [0]+list(map(int,input().split()))+[0] SUMX = 0 for i in range(1,len(X)): SUMX += abs(X[i-1] - X[i]) for i in range(1,N+1): print(SUMX + abs(X[i-1] - X[i+1]) - abs(X[i] - X[i-1]) - abs(X[i+1] - X[i]))
14:04 AC
D - Grid Components
100x100のグリッド内で白連結成分A個、黒連結成分B個を作成せよ。
白2個、黒3個ならこんな感じで良いですね。
最初に上は全部白マス、下は全部黒マス。これで白黒1つずつの連結成分。
次に、白連結成分をつくりたければ、黒マスの中に1x1の白マスを埋めていく。
黒連結成分も同様に。
A,B = map(int,input().split()) print(100,100) L=[] for i in range(50): L.append(["#" for j in range(100)]) for i in range(50): L.append(["." for j in range(100)]) A-=1 for i in range(50): for j in range(25): if A>0: L[i*2][j*2] = "." A -=1 B-=1 for i in range(50): for j in range(25): if B>0: L[51 + i*2][j*2] = "#" B-=1 for i in range(100): print("".join(L[i]))
30:52 AC
白の大きな連結成分にくっつく形で白1x1マスを作って1WA
出力形式のミス(グリッド間に空白をいれてしまった)で1WA
実際のコンテストだったら発狂ものですね。