前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode meituan-003. 小美的跑腿代购(排序)

LeetCode meituan-003. 小美的跑腿代购(排序)

作者头像
Michael阿明
发布2021-09-06 11:40:15
3300
发布2021-09-06 11:40:15
举报
文章被收录于专栏:Michael阿明学习之路

文章目录

1. 题目

小美的一个兼职是美团的一名跑腿代购员,她有 n 个订单可以接,订单编号是 1~n , 但是因为订单的时效性,他只能选择其中 m 个订单接取,精明的小美当然希望自己总的获利是最大的, 已知,一份订单会提供以下信息,跑腿价格 v ,商品重量 w kg, 商品每重 1kg ,代购费用要加 2 元,而一份订单可以赚到的钱是跑腿价格和重量加价之和。 小美可是开兰博基尼送货的人,所以自然不会在意自己会累这种事情。 请问小美应该选择哪些订单,使得自己获得的钱最多。 请你按照选择的订单编号的从小到大顺序,如果存在多种方案,输出订单编号字典序较小的方案。

代码语言:javascript
复制
格式:

输入:
- 输入第一行包含两个正整数 n,m,表示订单的数量和小美可以接的订单数量。
- 接下来有 n 行,第 i 行表示 i-1 号订单的信息。每行有两个正整数 v 和 w  ,
   表示一个订单的跑腿价格和商品重量。
输出:
- 输出包含 m 个 1~n 之间的正整数,中间用空格隔开,表示选择的订单编号。

示例:
输入:
     5 2
     5 10
     8 9
     1 4
     7 9
     6 10
输出:2 5

提示:
1 <= n, m <= 10000
1 <= v, w <= 1000
请注意,本题需要自行编写「标准输入」和「标准输出」逻辑,
以及自行 import/include 需要的 library。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/GXV5dX 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int m,n,v,w,i=0;
    cin >> n >> m;
    vector<pair<int,int>> arr(n);
    while(n--)
    {
        cin >> v >> w;
        arr[i] = {v+2*w, i+1};//获利,编号
        i++;
    }
    sort(arr.begin(), arr.end(),[&](auto a, auto b){
        if(a.first == b.first)
            return a.second < b.second;
        return a.first > b.first;//价格大的优先,标号小的优先
    });
    sort(arr.begin(), arr.begin()+m,[&](auto a, auto b){
            return a.second < b.second;//前m个,按编号排序
    });
    i = 0;
    while(m--)
    {
        cout << arr[i].second << " ";
        i++;//输出编号
    }
    return 0;
}

24 ms 3.3 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. 题目
  • 2. 解题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档