ebisukeプログラミング初心者脱出黙示録

30歳を過ぎてから始めたプログラミングと競プロの記録。Pythonで取り組んでいます。Arduinoで電子工作も

AtCoder-ABC194 A - I Scream / B - Job Assignment【Python解答例】

f:id:ebisuke33:20210317152309p:plain
AtCoder Beginner Contest194のA - I ScreamとB - Job AssignmentについてPythonの解答例を記事にしていきます。
AtCoder Beginner Contest 194 - AtCoder


AtCoder Beginner Contest194 A - I Scream

A - I Scream

問題文

日本において、アイス製品は次の 4 種類に大別されます。
・乳固形分が 15 パーセント以上、乳脂肪分が 8 パーセント以上含まれるものを「アイスクリーム」とする。
・上に当てはまらず、乳固形分が 10 パーセント以上、乳脂肪分が 3 パーセント以上含まれるものを「アイスミルク」とする。
・上のいずれにも当てはまらず、乳固形分が 3 パーセント以上含まれるものを「ラクトアイス」とする。
・上のいずれにも当てはまらないものを「氷菓」とする。
ここで、乳固形分は無脂乳固形分と乳脂肪分の 2 つから成ります。
AtCoder 名物の製品「スヌケアイス」には、無脂乳固形分は A パーセント、乳脂肪分は B パーセント含まれています。
スヌケアイスに上の分類を適用したとすると、4 種類のどれに当てはまるでしょうか ?
答えは「出力」の項に従って整数で出力してください。

制約

・0≤A≤100
・0≤B≤100
・A+B≤100
・A,B は整数

解答例

a, b = map(int,input().split())

if a + b >= 15 and b >= 8:
    print(1)
elif a + b >= 10 and b >= 3:
    print(2)
elif a + b >= 3:
    print(3)
else:
    print(4)

解説

無脂乳固形分は A パーセント、乳脂肪分は B パーセントのアイスが4種類のどれにあてはまるか答える問題です。

誤読に注意して問題文通りの条件分けを行えばOKです。
自分はラクトアイスの条件「乳固形分が 3 パーセント以上含まれるもの」はA+Bになる点を勘違いして間違えそうでした (^_^;)


AtCoder Beginner Contest194 B - Job Assignment

B - Job Assignment

問題文

あなたの会社には従業員 1 から従業員 N までの N 人の従業員がいます。
今あなたは仕事 A と仕事 B の 2 つの仕事を受注したので、これらを完了しなければなりません。
従業員 i は仕事 A を Ai 分、仕事 B を Bi 分でこなすことができます。
あなたは仕事 A と仕事 B にそれぞれ従業員を 1 人割り当てます。
同じ従業員を両方の仕事に割り当てても構いませんが、その場合 2 つの仕事が終わるのにかかる時間は、それぞれの仕事が終わるのにかかる時間の和となります。
仕事 A と仕事 B に異なる従業員を割り当てた場合、2 つの仕事が終わるのにかかる時間は、各仕事が終わるのにかかる時間の長い方となります。
2 つの仕事が終わるのにかかる時間として考えられる最小の値を求めてください。

制約

・2≤N≤1000
・1≤Ai≤10^5
・1≤Bi≤10^5
・入力に含まれる値は全て整数

解答例

n = int(input())

A = []
B = []
for i in range(n):
    a, b = map(int, input().split())
    A.append(a)
    B.append(b)

res = 1e9

for i in range(n):
    for j in range(n):
        if i == j:
            tmp = A[i] + B[j]
        else:
            tmp = max(A[i], B[j])
        res = min(res,tmp)

print(res)

解説

仕事AとBに割り当てる人を選んで、最短で仕事がおわる時間を答える問題です。

全探索で最短時間を求めました。
もし仕事AとBを同じ人が行う場合はAi+Biが最短時間の候補です。
仕事Aをiさんが、Bをjさんが行う場合はAiとBjの大きいほうが候補になります。

この候補とresを比較して小さいほうをresとしていき、ループを抜ければ最短時間が求まります。



問題文を正確に理解するのに時間がかかった印象です。
続いてC問題も記事にしていきたいと思います。


ABC194の関連記事はこちら
ebisuke33.hatenablog.com
ebisuke33.hatenablog.com