当前位置: 首页 > news >正文

泰安市委常委名单广州网站运营专注乐云seo

泰安市委常委名单,广州网站运营专注乐云seo,自己的电脑做网站空间视屏,上海服装设计公司排名问题背景 给你 n n n 个任务和 m m m 个工人。每个任务需要一定的力量值才能完成,需要的力量值保存在下标从 0 0 0 开始的整数数组 t a s k s tasks tasks 中,第 i i i 个任务需要 t a s k s [ i ] tasks[i] tasks[i] 的力量才能完成。每个工人的…

问题背景

给你 n n n 个任务和 m m m 个工人。每个任务需要一定的力量值才能完成,需要的力量值保存在下标从 0 0 0 开始的整数数组 t a s k s tasks tasks 中,第 i i i 个任务需要 t a s k s [ i ] tasks[i] tasks[i] 的力量才能完成。每个工人的力量值保存在下标从 0 0 0 开始的整数数组 w o r k e r s workers workers 中,第 j j j 个工人的力量值为 w o r k e r s [ j ] workers[j] workers[j]。每个工人只能完成 一个 任务,且力量值需要 大于等于 该任务的力量要求值(即 w o r k e r s [ j ] ≥ t a s k s [ i ] workers[j] \ge tasks[i] workers[j]tasks[i])。
除此以外,你还有 p i l l s pills pills 个神奇药丸,可以给 一个工人的力量值 增加 s t r e n g t h strength strength。你可以决定给哪些工人使用药丸,但每个工人 最多 只能使用 一片 药丸。
给你下标从 0 0 0 开始的整数数组 t a s k s tasks tasks w o r k e r s workers workers 以及两个整数 p i l l s pills pills s t r e n g t h strength strength,请你返回 最多 有多少个任务可以被完成。

数据约束

  • n = t a s k s . l e n g t h n = tasks.length n=tasks.length
  • m = w o r k e r s . l e n g t h m = workers.length m=workers.length
  • 1 ≤ n , m ≤ 5 × 1 0 4 1 \le n, m \le 5 \times 10 ^ 4 1n,m5×104
  • 0 ≤ p i l l s ≤ m 0 \le pills \le m 0pillsm
  • 0 ≤ t a s k s [ i ] , w o r k e r s [ j ] , s t r e n g t h ≤ 1 0 9 0 \le tasks[i], workers[j], strength \le 10 ^ 9 0tasks[i],workers[j],strength109

解题过程

解决问题的核心,是贪心和二分。
由于题目要要求的是完成任务的数量,那么对于同一个任务而言,用力量更强的工人还是用相对较弱的,对答案的贡献是一样的,选择会带来的区别在于是否需要用药丸。
所以让力量更强的工人去完成简单的任务,更有可能省下一颗药丸,使得原本在剩余资源中无法完成的任务在药物的加持下变得可能完成,产生更大的总数。

具体实现

class Solution {public int maxTaskAssign(int[] tasks, int[] workers, int pills, int strength) {Arrays.sort(tasks);Arrays.sort(workers);int left = 1;int right = Math.min(tasks.length, workers.length) + 1;while (left < right) {int mid = left + ((right - left) >>> 1);if (check(tasks, workers, pills, strength, mid)) {left = mid + 1;} else {right = mid;}}// 注意,讨论的区间端点左侧才是能实现的任务数return left - 1;}private boolean check(int[] tasks, int[] workers, int pills, int strength, int limit) {// 用双端队列记录可以完成的任务,根据是否食用药丸作不同的处理Deque<Integer> queue = new ArrayDeque<>();for (int i = 0, j = workers.length - limit; j < workers.length; j++) {int cur = workers[j];while (i < limit && cur + strength >= tasks[i]) {queue.addLast(tasks[i++]);}if (queue.isEmpty()) {return false;}if (cur >= queue.peekFirst()) {queue.pollFirst();continue;}if (pills == 0) {return false;}pills--;queue.pollLast();}return true;}
}
http://www.cadmedia.cn/news/7377.html

相关文章:

  • 网站建设带后台带微商城发广告去哪个平台
  • 太原贴吧天津搜狗seo推广
  • 建设网站要服务器谷歌 chrome 浏览器
  • 3g网站制作百度地图网页版进入
  • 建设公司名字seo需要掌握哪些技术
  • asp网站建设网页设计制作网站模板图片
  • 上海企业网站semi是什么意思
  • 济宁网站建设公司有哪些sem代运营
  • 如何使用天翼云主机建设网站北京seo优化排名推广
  • wordpress weixin已矣seo排名点击软件
  • 怎样做企业官方网站关键词你们都搜什么
  • 科技有限公司简介模板廊坊seo排名
  • 宿舍管理系统优势的seo网站优化排名
  • 网站地图建设有什么用杭州seo网站建设靠谱
  • c 多语言网站怎么做如何免费注册网站平台
  • 兰州网站建设100应用市场
  • 宁夏建设监督网站企业查询天眼查
  • 企业网站建设 调研中国公关公司前十名
  • 无锡市住房建设局网站谷歌搜索引擎为什么国内用不了
  • 大连建设网站制作市场营销专业就业方向
  • 网站建站建设工作总结2022年可以打开的网址
  • 手机网站开发费用推销广告
  • 四川省红鱼洞水库建设管理网站武汉seo招聘
  • 政务网站建设的三大核心功能是什么搜索引擎的作用
  • 工程招标平台关键词优化策略
  • 建筑公司网站广告宣传语百度收录网址提交
  • 如果网站设计时新闻热点事件
  • 营商环境网站建设网页广告调词平台
  • 十个程序员必备的网站seo知识点
  • 苏州网站建设名字公司开发设计推荐