题目描述:

某餐馆有n张桌子,每张桌子有一个参数:a 可容纳的最大人数; 有m批客人,每批客人有两个参数:b人数,c预计消费金额。 在不允许拼桌的情况下,请实现一个算法选择其中一部分客人,使得总预计消费金额最大 
输入描述:

输入包括m+2行。 第一行两个整数n(1 <= n <= 50000),m(1 <= m <= 50000) 第二行为n个参数a,即每个桌子可容纳的最大人数,以空格分隔,范围均在32位int范围内。 接下来m行,每行两个参数b,c。分别表示第i批客人的人数和预计消费金额,以空格分隔,范围均在32位int范围内。

输出描述:
输出一个整数,表示最大的总预计消费金额
示例1

输入:
3  5

2  4 2

1  3

3  5

3  7

5  9

1  10

输出:
20

思路:

最开始想的是背包问题,用动态规划,求出消费金额最大的值。但是这道题有特殊条件

1:不同的客人不能拼桌

2:同一批客人不能拆成几桌做(很奇怪的条件)

贪心+二分查找 可以解决上述问题,将桌子容纳人数从小到大排序,将预计消费金额从大到小排序,贪心的安排客人。

查找桌子的时候要找到没有分配的桌子里面满足容纳这批客人的最小号桌子,因为桌子排了序,要满足时间复杂度要求的话,需要用到二分查找。


JavaScript:

var line=readline().split(' ');
var n=parseInt(line[0]),m=parseInt(line[1]);
var arr=readline().split(' ').map(function(item){return parseInt(item);
});
var peArr=[];
for(var i=0;i<m;i++)
{line=readline().split(' ');peArr.push([parseInt(line[0]),parseInt(line[1])]);
}
//升序
arr.sort(function(a,b){return  a-b;
});
//按照给的钱降序
peArr.sort(function(a,b){return b[1]-a[1];
});
var sum=0;
for(var i=0;i<m;i++)
{var item=peArr[i][0];if(arr.length==0)break;if(item>arr[arr.length-1])continue;else{var j=arr.length;var low=0;var high=arr.length-1;while(low<high){var mid=Math.floor((low+high)/2);if(arr[mid]<item)low=mid+1;elsehigh=mid;}if(low<arr.length){sum+=peArr[i][1];arr.splice(low,1);}}
}
print(sum);

牛客网 [编程题]餐馆相关推荐

  1. Python 牛客网编程题输入用例问题

    Python 牛客网编程题的输入用例 前言 切入正题 输入字符串 输入整数 输入列表 后记 前言 在牛客网刷题的时候,发现明明在python本地编译器能够轻松解决的输入用例问题,到牛客网在线编译就得好 ...

  2. 牛客网编程题python_牛客网数据结构练习题

    第一次使用牛客做编程题,刚开始不了解如何输入输出,查了查才知道.我用的是语言是 Javascript v8 6.0.0 readline() 表示得到输入的字符串,如果是多行的话,每readline一 ...

  3. python牛客网编程题_一波优秀的自学编程语言网站

    网课已经开设两三个月了 同学们上网课的效果怎么样呢? 特别是学编程的同学 没有了学校的学习氛围 没有了老师面对面教学指导 你是否为了编程而焦头烂额,生无可恋呢? 没事,现在同学们的福利来啦! 下面是给 ...

  4. python牛客网编程题_【面经】小米软件开发一面(python)面经 2020 2020

    作者:JessyTsui https://www.nowcoder.com/discuss/580721?type=2&order=0&pos=15&page=1&ch ...

  5. 牛客网编程题——合唱团(网易2017)

    这题在编程达人面前应该算是水题,但这算是我第一个做出来的动态规划程序,作为纪念,分享一下.题目链接: https://www.nowcoder.com/practice/661c49118ca2419 ...

  6. 牛客网—编程题(1)牛牛的礼物

    题目描述 众所周知,牛妹有很多很多粉丝,粉丝送了很多很多礼物给牛妹,牛妹的礼物摆满了地板.地板是N\times MN×M的格子,每个格子有且只有一个礼物,牛妹已知每个礼物的体积.地板的坐标是左上角(1 ...

  7. 牛客网编程题python输入输出_牛客网算法题目记录

    车站建设问题 有10^8个村庄排在一条公路上,依次编号为0~10^8-1,相邻村庄距离为1,其中有n个村庄居住着牛牛,居住着牛牛的村庄从小到大依次为a0~an-1,其中保证a0=0. 现在需要建设车站 ...

  8. 牛客网 [编程题]数字和为sum的方法数

    题目描述: 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数. 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案. 输入描述: 输入为两行:第一行 ...

  9. 牛客网编程题07--提取不重复的整数

    题目 代码: // ExtractNum.cpp : 定义控制台应用程序的入口点. // 从右到左 提取一个不重复的整数 // 提取,string转int,int转string#include &qu ...

最新文章

  1. SQL 2014新特性- Delayed durability
  2. curl php 百度,phpcurl模拟登录百度首页
  3. CAN 总线 之一 总线拓扑、物理电平、发展史 详解
  4. PTA 7-3 地铁一日游 (30 分)
  5. 获取apk安装包sha1的值
  6. 2017.2.10自测(noip2002)
  7. string转int的方法_Spark——scala 实用小方法
  8. android NDK 开发
  9. 全网音乐Music Download v2.1.2
  10. SW小技巧2:将属性链接到 SOLIDWORKS 工程图的简便方法
  11. 测试转开发,我都经历了什么
  12. Java程序-自制班级随机选人程序
  13. RocketMQ 延迟消息解析——图解、源码级解析
  14. .NetCore异常:Could not load file or assembly ‘Microsoft.AI.Web‘ or one of its dependencies. The system
  15. 一个简单光栅器的实现(五) 光栅化阶段
  16. 线上插画培训班有用吗,教你选靠谱的插画课程
  17. OSChina 周日乱弹 —— 你撞鬼了吗?
  18. 高德地图动态锁定地图不能放大缩小和滑动
  19. C++常成员函数 常对象成员
  20. Android输入法官方SoftKeyboard示例解析

热门文章

  1. CentOS6.8 下MySQL5.6.29主从复制架构配置
  2. RocketMQ事务消费和顺序消费详解
  3. su - 提示失败问题[su方式]
  4. 2015年度“最佳技术团队”和“最佳CTO”评选活动火热进行中
  5. HDU4907小技巧
  6. 【转】雷军自曝创业第一年:掏自己的钱创业成功率最高
  7. 更改盘符实现文件服务器的特使需求
  8. 配置交换机端口聚合(思科、华为、锐捷)
  9. linux的free命令详解-内存是拿来用的不是拿来看的
  10. Transformer-XL语言模型:超长上下文依赖