AtCoder の問題を解くために必要な実力を付けるために作られた「典型問題」を解いていく企画として、「典型90」があります。
今回は、その内、の14問目である 014 – We Used to Sing a Song Together(★3)を解説していきたいと思います。
なにか、間違っているところなどありましたら、@EitaSugiまで、ご指導ご鞭撻の程、よろしくお願い致します!
問題名 【014 – We Used to Sing a Song Together(★3)】
014 – We Used to Sing a Song Together(★3)
考察
今回は、小学校と小学生の数が同じなので、1小学校に1人の生徒を割り当てる必要があります。
そして、その総和を最小にする問題です。
そのため、誰か1人の不便さを最小にするよりも全体の不便さを下げるためにはどうしたら良いかを考えます。
それは、それぞれをソートして、i番目の生徒をi番目の小学校に割り当てれば良いです。
コード
import sys
def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def II(): return int(sys.stdin.readline())
def MI(): return map(int,sys.stdin.readline().rstrip().split())
def S(): return sys.stdin.readline().rstrip()
readline = sys.stdin.readline
sys.setrecursionlimit(10 ** 6)
N = II()
A = LI()
B = LI()
A.sort()
B.sort()
ans = 0
for i in range(N):
ans += abs(A[i]-B[i])
print(ans)
まとめ
解説が解説になってない気もするけど、、、ごめんちゃい
前の問題【013 – Passing(★5)】
次の問題【016 – Minimum Coins(★3)】
コメント