학교 시작 : 샤오밍이 곧 학교를 시작하려고하는데 샤오밍은 짐이 너무 많아서 혼자서 학교에 다 가져갈 수 없어서 학교에 짐을 보내려고합니다. 이제 Xiao Ming에는 N 개의 수하물이 있다는 것이 알려져 있습니다 ...

제목 설명

샤오밍은 곧 학교를 시작하려고하는데 샤오밍의 짐이 너무 많아서 혼자서 학교에 다 가져갈 수 없어서 샤오밍은 짐을 학교에 보내려고한다. 현재 Xiao Ming은 총 N 개의 수하물을 가지고 있으며 각 수하물의 무게는 Wi입니다. 총 M 개의 익스프레스 회사가 있습니다. Xiao Ming은 특송을 보낼 회사를 최대 1 개 선택하고 i-th 특송 회사는 총 중량이 ai이고 요금이 ci 인 수하물까지 우편을 보낼 수 있습니다. 샤오밍은 총 무게가 D 인 짐을 기껏해야 휴대 할 수 있으며 비용이 최대한 적기를 바랍니다. 샤오밍은 모든 짐을 학교에 가져갈 수 있습니까?

입력 데이터

입력 데이터의 첫 번째 줄은 테스트 데이터 그룹의 수를 나타내는 양의 정수 T입니다. 다음은 테스트 데이터의 T 그룹입니다. 각 테스트 데이터 그룹의 첫 번째 줄은 세 개의 정수 N, M 및 D (1 ≤ T ≤ 100, 1 ≤ N, M, D ≤ 1000)입니다. 다음 행은 N 개의 수하물 무게를 나타내는 N 개의 정수입니다. 다음 M 행에서 각 행의 공백으로 구분 된 두 개의 정수 ai 및 ci는 i-th 특급 회사의 최대 우편물의 무게와 비용을 나타냅니다 (0 ≤ wi ≤ 100, 0 ≤ ai ≤ 100000, 0 ≤ ci ≤ 1000).

출력 데이터

각 입력 데이터 그룹에 대해 "Case #id : ans"결과 행을 출력합니다. 이는 id 그룹 데이터의 결과가 ans이고 id가 1부터 시작 함을 의미합니다. Xiao Ming이 모든 짐을 학교에 가져갈 수없는 경우 ans는 "QAQ"이고, 그렇지 않으면 ans는 Xiao Ming의 최소 비용입니다.

샘플 입력

1
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