学校が始まる:シャオミンは学校を始めようとしていますが、シャオミンは荷物が多すぎて一人で学校に行くことができないので、シャオミンは荷物を学校に郵送したいと思っています。現在、シャオミンにはN個の荷物があることがわかっています...

タイトル説明

シャオミンは学校を始めようとしていますが、シャオミンの荷物が多すぎて一人で学校に行くことができないので、シャオミンは荷物を学校に郵送したいと思っています。現在、シャオミンには合計N個の荷物があり、各荷物の重量はWiであることがわかっています。合計M個のエクスプレス会社が利用可能です。Xiao Mingは、最大で1つの会社を選択してエクスプレスを送信し、i番目のエクスプレス会社は総重量がai、料金がciの手荷物まで郵送できます。Xiao Ming自身は、最大で総重量Dの荷物を受け取ることができ、彼の費用ができるだけ少なくなることを望んでいます。Xiao Mingは荷物をすべて学校に持っていくことができますか?

入力データ

入力データの最初の行は正の整数Tで、これはテストデータのグループの数を表します。次はテストデータのTグループです。テストデータの各グループの最初の行は、3つの整数N、M、およびDです(1≤T≤100、1≤N、M、D≤1000)。次の行はN個の整数で、N個の荷物の重量を表します。次のM行では、各行のスペースで区切られた2つの整数aiとciは、i番目の運送会社の最大郵送の重量とコストを表します(0≤ wi≤100、0≤ai≤100000、0≤ci≤1000)。

出力データ

入力データのグループごとに、結果の行「Case #id:ans」を出力します。これは、idグループデータの結果がansであり、idが1から始まることを意味します。Xiao Mingが荷物をすべて学校に持って行けない場合、ansは「QAQ」です。それ以外の場合、ansはXiaoMingの最小費用です。

サンプル入力

1
2 2 10
5 6
5 10
6 5

サンプル出力

ケース#1:5

経験:この質問は比較的単純です。複数の会社を選択してエクスプレスを送信できる場合は、最小コストについて考えることができます。 ||

T = int(input())      
for t in range(T):      
    N,M,D = list(map(int, input().split()))       
    ns = list(map(int, input().split()))      ds = 0        
    for i in ns:            
        ds += i        
    ms = []      
    for i in range(M):          
        ms.append(list(map(int, input().split())))      
    if ds<=D:            
        print('Case #{}: {}'.format(t+1,'0'))      
    else:          
        ds = ds-D               
        isOK = False          
        temp = []          
        for i in range(M):              
            if ms[i][0]>=ds:                  
                isOK = True                  
                temp.append(ms[i][1])          
        if isOK==False:              
            print('Case #{}: {}'.format(t+1,'QAQ'))          
        else:              
            temp.sort()              
            print('Case #{}: {}'.format(t+1,temp[0]))  

おすすめ

転載: blog.csdn.net/tianxiefenxiang/article/details/107696222