AtCoder Beginner Contest 129・183 A・B問題
前書き
AtCoder Beginner Contest 129・183 A・B問題を解きました。
B問題(ABC129)
- 難易度:灰
- 時間:10分
問題を見て累積和を使うとアルゴリズムが簡略化されそうだと感じました。
その結果、途中までの和 vs 残りの和の最小を調べれば良いので、O(N)で計算できます。
import itertools N = int(input()) W = list(map(int, input().split())) _sumW = list(itertools.accumulate(W)) _min = 100 for i in range(N): _min = min(abs((_sumW[-1]-_sumW[i])-_sumW[i]), _min) print(_min)
B問題(ABC183)
- 難易度:灰
- 時間:10分
幾何的な思考でアルゴリズムを考えました。
y軸座標の比をとる考え方をすれば楽に解けるはずです。
正負の符号に気をつけてください。
Sx,Sy,Gx,Gy=map(int,input().split()) print(Sx+(Gx-Sx)*(Sy/(Sy+Gy)))