博客
关于我
sdut 懒虫小鑫(快排里面,再加一个排序)
阅读量:780 次
发布时间:2019-03-25

本文共 582 字,大约阅读时间需要 1 分钟。

小鑫有n块矿石,每块矿石有两个属性:重量w和价值p。他每天能卖m块矿石,每次都会选重量最小的,如果多个重量相同则选价值高的。我们的目标是计算他能卖出m块矿石后所能得到的总价值。

首先,我们对所有矿石按照重量从小到大排序,同重量时按价值从高到低排序。这样排列后,前m个矿石的价值总和就是最大化的。这是因为在保证每天卖的都是重量最轻的前提下,这样能在总重量最小的前提下获得最大的价值。

具体步骤:

  • 将所有矿石按重量从小到大排序,当重量相同时,按价值从高到低排序。
  • 取前m个矿石,计算它们的价值总和。
  • 这样可以确保总价值最大化。对于输入的矿石,进行上述排序后,计算总和即可。

    现在,来看具体实现。首先,对输入的矿石进行排序,然后取前m个,计算它们的价值之和。

    代码示例如下:

    n, m = map(int, input().split())stones = []for _ in range(n):    w, p = map(int, input().split())    stones.append((w, p))# 按重量升序,价值降序排序stones.sort(key=lambda x: (x[0], -x[1]))total = sum(p for w, p in stones[:m])print(total)

    这样,我们就能得到小鑫总能赚到的最多钱数。

    转载地址:http://bjbuk.baihongyu.com/

    你可能感兴趣的文章
    Open-Sora代码详细解读(2):时空3D VAE
    查看>>
    Open-Source Service Discovery
    查看>>
    open-vm-tools-dkms : 依赖: open-vm-tools (>= 2:9.4.0-1280544-5ubuntu3) 但是它将不会被安装
    查看>>
    open3d-Dll缺失,未找到指定模块解决
    查看>>
    openai Midjourney代理服务 gpt大模型第三方api平台汇总 支持国内外各种大模型 持续更新中...
    查看>>
    OpenAll:Android打开组件新姿势【仅供用于学习了解ButterKnife框架基本原理】
    查看>>
    OpenASR 项目使用教程
    查看>>
    Openbox-桌面图标设置
    查看>>
    opencart出现no such file or dictionary
    查看>>
    OpenCV 3.1 imwrite()函数写入异常问题解决方法
    查看>>
    OpenCV 4.1.0版drawContours
    查看>>
    opencv glob 内存溢出异常
    查看>>
    opencv Hog Demo
    查看>>
    opencv Hog学习总结
    查看>>
    opencv Mat push_back
    查看>>
    opencv putText中文乱码
    查看>>
    OpenCV Python围绕特定点将图像旋转X度
    查看>>
    opencv resize
    查看>>
    opencv SVM分类Demo
    查看>>
    OpenCV VideoCapture.get()参数详解
    查看>>