zoukankan      html  css  js  c++  java
  • [Python语法练习]CF 591 C

    解题思路:二分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
    
  • 相关阅读:
    javascript 自定义事件
    tf.control_dependencies
    神经网络全连接层+softmax:
    Tensorflow图级别随机数设置-tf.set_random_seed(seed)
    tensorflow-GPU配置
    python-生成器(generation)
    编码器内容-去噪
    Group Convolution组卷积
    VSCode 设置vue 保存自动格式化代码
    redis外部连接
  • 原文地址:https://www.cnblogs.com/zeolim/p/12270332.html
Copyright © 2011-2022 走看看