前提・実現したいこと
ここに質問の内容を詳しく書いてください。
Pythonで下記の問題を解いておりましたが、どうしてもある入力に対して間違いを出力します
どこのロジックが間違っているか、ご教示いただけますでしょうか
該当のソースコード
python
1def main(): 2 n, h = map(int, input().split()) 3 alis = [] 4 blis = [] 5 for _ in range(n): 6 a, b = map(int, input().split()) 7 alis.append(a) 8 blis.append(b) 9 alis.sort(reverse=True) 10 blis.sort(reverse=True) 11 12 #bでaの最大値より小さいものを探す/ 基本戦略はaの最大値よりも高いbの刀群はすべて使い、のこりのHP分をaの最大値で削り続ける 13 14 if alis[0] >= blis[0]: 15 if h % alis[0] == 0: 16 kaisuu = h// alis[0] 17 else: 18 kaisuu = h // alis[0] + 1 19 else: 20 tmp = 0 21 while alis[0] < blis[tmp]: 22 tmp += 1 23 if tmp >= len(blis): 24 break 25 26 bsum = sum(blis[:tmp]) 27 hnokori = h - bsum 28 kaisuu = tmp 29 if hnokori % alis[0] == 0: 30 kaisuu += hnokori // alis[0] 31 else: 32 kaisuu += hnokori // alis[0] + 1 33 34 print(kaisuu) 35 36 37 38if __name__ == "__main__": 39 main() 40
試したこと
サンプルについて、全出力が正しいことや、境界条件についてみてみる、等はしていますが
間違っている理由を細くできていません
恐れ入りますが、ご指摘いただけますと幸いです
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/06 02:54