[Python語法練習]CF 591 C - Save the Nature

解題思路:二分check 代碼比較長 所以拿來練習一下py

語法總結:

新建空list

arr = [] 

定義函數 

def (參數1, 參數2, 參數3):

    return 任意類型列表


python 默認向負無窮取整 整除 // 即爲 C++ 的floor


輸入一個列表

arr = [int(len) for len in input().split()]

代碼:

arr = []
sxy = []
sx = []
sy = []
n = 0
x = 0
a = 0
y = 0
b = 0
k = 0

def check (now):
    p = 0
    ret = 0
    for i in sxy:
        if i > now:
            break
        else:
            ret = ret + arr[p] * (x + y) // 100
            p = p + 1
        
    if x >= y:
        for i in sx:
            if i > now:
                break
            else:
                ret = ret + arr[p] * x // 100
                p = p + 1
        for i in sy:
            if i > now:
                break
            else:
                ret = ret + arr[p] * y // 100
                p = p + 1
    else:
        for i in sy:
            if i > now:
                break
            else:
                ret = ret + arr[p] * y // 100
                p = p + 1
        for i in sx:
            if i > now:
                break
            else:
                ret = ret + arr[p] * x // 100
                p = p + 1

    return ret >= k


n = int(input())

while n :
    len = int(input())

    arr.clear()
    
    arr = [int(len) for len in input().split()]
    
    x, a = map(int, input().split())
    y, b = map(int, input().split())

    k = int(input())
    
    arr.sort(reverse=True)

    sxy.clear()
    sx.clear()
    sy.clear()

    for i in range(1, len + 1):
        if i % a == 0 and i % b == 0:
            sxy.append(i)
        elif i % a == 0:
            sx.append(i)
        elif i % b == 0:
            sy.append(i)
        
    fst = 0
    lst = len
    ans = 0

    if not check(len):
        print('-1')
    else:

        while(fst <= lst):
            mid = (fst + lst) // 2
            if check(mid):
                lst = mid - 1
                ans = mid
            else:
                fst = mid + 1

        print(ans)
    
    n = n - 1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章