题目描述:小Q的公司最近接到m个任务,第i个任务需要Xi的时间去完成,难度等级为yi。
                小Q拥有n台机器,每台机器最长工作时间zi,机器等级wi。
               对于一个任务,它只能交由一台机器来完成,如果安排给它的机器的最长工作时间小于任务需要的时间,则不能完成,
                如果完成这个任务将获得200*xi + 3*yi收益。
                对于一台机器,它一天只能完成一个任务,如果它的机器等级小于安排给它的任务难度等级,则不能完成。
               小Q想在今天尽可能的去完成任务,即完成的任务数量最大。如果有多种安排方案,小Q还想找到收益最大的那个方案。小Q需要你来帮助他计算一下。
           输入描述:输入包括 N + M + 1行
                 输入的第一行为两个正整数n和m(1 <= n, m <= 100000),表示机器的数量和任务的数量。
                 接下来n行,每行两个整数zi和wi(0 < zi < 1000, 0 <= wi <= 100),表示每台机器的最大工作时间和机器等级。
                 接下来的m行,每行两个整数xi和yi(0 < xi < 1000, 0 <= yi <= 100),表示每个任务需要的完成时间和任务的难度等级。
           输出描述:输出两个整数,分别表示最大能完成的任务数量和获取的利益。
           输入: 1 2
               100 3
               100 2
               100 1

输出:1 20006

package com.study;import java.util.Scanner;/**
* @author ZhaoFang
* @date 2018年4月5日 下午9:18:17
* @describe 安排机器:小Q的公司最近接到m个任务,第i个任务需要Xi的时间去完成,难度等级为yi。
*                 小Q拥有n台机器,每台机器最长工作时间zi,机器等级wi。
*                 对于一个任务,它只能交由一台机器来完成,如果安排给它的机器的最长工作时间小于任务需要的时间,则不能完成,
*                 如果完成这个任务将获得200*xi + 3*yi收益。
*                 对于一台机器,它一天只能完成一个任务,如果它的机器等级小于安排给它的任务难度等级,则不能完成。
*                 小Q想在今天尽可能的去完成任务,即完成的任务数量最大。如果有多种安排方案,小Q还想找到收益最大的那个方案。小Q需要你来帮助他计算一下。
*           输入描述:输入包括 N + M + 1行
*                 输入的第一行为两个正整数n和m(1 <= n, m <= 100000),表示机器的数量和任务的数量。
*                 接下来n行,每行两个整数zi和wi(0 < zi < 1000, 0 <= wi <= 100),表示每台机器的最大工作时间和机器等级。
*                 接下来的m行,每行两个整数xi和yi(0 < xi < 1000, 0 <= yi <= 100),表示每个任务需要的完成时间和任务的难度等级。
*           输出描述:输出两个整数,分别表示最大能完成的任务数量和获取的利益。
*           输入: 1 2
*               100 3
*               100 2
*               100 1
*           输出:1 20006
*/
public class Tencent3 {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();//机器的数量int m = in.nextInt();//任务的数量if(n < 1 || n > 100000 || m < 1 || m > 100000) return;int[] z = new int[n];//机器的最大工作时间数组int[] w = new int[n];//机器等级数组int[] x = new int[m];//任务需要的完成时间数组int[] y = new int[m];//任务的难度等级数组int temp1 = 0;int temp2 = 0;//输入每台机器的最大工作时间和机器等级for(int i = 0; i < n; i++) {temp1 = in.nextInt();temp2 = in.nextInt();if(temp1 > 0 && temp1 < 1000 && temp2 >= 0 && temp2 <= 100) {z[i] = temp1;w[i] = temp2;}}//输入每个任务需要的完成时间和任务的难度等级for(int j = 0; j < m; j++) {temp1 = in.nextInt();temp2 = in.nextInt();if(temp1 > 0 && temp1 < 1000 && temp2 >= 0 && temp2 <= 100) {x[j] = temp1;y[j] = temp2;}}int cost = 0;//获取的收益int count = 0;//最大能完成的任务数量int p = -1;//设置标志,如果机器与任务都相匹配,选出收益最大,并保证该任务只被一个机器完成,且一台机器每天只能完成一个任务int q = -1;//解题难点:存在一个机器适用于多种任务的情况,此时需选出收益最大的那个任务,并将完成的任务数量+1for(int i = 0; i < n; i++) {for(int j = 0; j < m; j++) {if(z[i] >= x[j] && w[i] >= y[j]) {temp1 = 200*x[j] + 3*y[j];if(temp1 > cost) {cost = temp1;}if(p != i && q != j) {p = i;q = j;count++;}}}}System.out.println("最大能完成的任务数量为:" + count);System.out.println("获取的利益:" + cost);}
}

上述求解方式纯属个人理解,如有考虑不周,还望大家多多指出!谢谢!

2018腾讯实习招聘笔试编程题之安排机器相关推荐

  1. 2018腾讯实习招聘笔试编程题之翻转数列

    题目描述:小Q定义了一种数列称为翻转数列                  给定整数n和m,满足n能被2m整除.对于一串连续递增整数数列1,2,3,4...,每隔m个符号翻转一次,最初符号为'-'   ...

  2. 2018年科大讯飞春招笔试编程题

    科大讯飞2018春招的笔试编程题中,第一题是判断蚊子是否在蚊帐中,比较简单,这里不做说明,本文将简单讲解第二题和重点说明第三题的解法. 第二题 1.题目 2.输入输出及样例 3.思路 这题思路很容易想 ...

  3. 京东2016春招(实习)笔试+编程题

    岗位:数据挖掘.机器学习.算法.模式识别 京东这套题出的耗时可以的,难度不是特别大,编程题感觉非常难理解,光看题干就看了老半天,当时简直吓尿了,一琢磨其实很简单.我只能回忆一部分内容,25选择+2编程 ...

  4. 奇虎360_2017校园招聘笔试编程题第一题

    今晚做了360的校招笔试题,编程题难度适中,在这里跟大家分享一下编程题的第一题. 1. 题目 2. 输入输出及样例 3. 我的思路 这题应该看题目理解一下就有思路,最简单粗暴的就是创建一个二维数组in ...

  5. 奇虎360_2017校园招聘笔试编程题第二题

    今晚做了360的校招笔试题,编程题难度适中,在这里跟大家分享一下编程题的第二题.第二道题也不难想到思路,但是如果写法不当,可能无法满足题目的时间限制. 1. 题目 2. 输入输出及样例 3. 我的思路 ...

  6. 商汤科技 2019校园招聘笔试编程题-2018.09.07

    本来阿里和商汤冲突了,就放弃了阿里的劝退型笔试,结果,商汤也劝退,只发一下题目做参考吧!知道题解的同学可以在评论区粘上链接,我会随时更新并加以感谢的.

  7. 滴滴 2019校园招聘笔试编程题-2018.09.18

    输入: slep slap sleep step shoe shop snap slep 输出: slep slap step 代码是交卷后写出来的,没有经过测试,不知道是否能够AC 利用DP求出每个 ...

  8. 科大讯飞2018暑期实习招聘在线编程题:如何分糖果?

    题目描述:小明和小红是好朋友,但最近遇到一个棘手的问题,有一盒糖果要分成两份但是每颗糖果质量都不尽相同,但为了分配的公平每份糖的糖果数量相差不得超过1,在此条件下两份糖果的质量差距尽可能小. 输入:一 ...

  9. 奇虎360 2015校园招聘笔试编程题

    题目一: 写一个函数,根据两文件的绝对路径算出相对路径. 如a="/qihoo/app/a/b/c/d/new.c",b="/qihoo/app/1/2/test.c&q ...

最新文章

  1. 年会抽奖程序准备好了吗?没有的话,直接来取!
  2. Linux编程下open()函数的用法
  3. 微软提出AdaLM,用于开发小型、快速且有效的领域预训练语言模型
  4. Spring 中获取servletContext及WebApplicationContext以及applicationContext三者之间的关系
  5. python运行出现数据错误_Python运行出错情况
  6. eval()函数和zip()函数用法、enumerate()
  7. LeetCode20.有效的括号 JavaScript
  8. 设计模式学习笔记之二:观察者模式
  9. Jquery学习----选择器
  10. CHI2019 ChewIt. An Intraoral Interface for Discreet Interactions
  11. 代码模块化编程思想!!
  12. python数据分析新手入门课程学习——(五)特征工程概述(数据预处理)(来源:慕课网)
  13. ROSBridge简介以及理解使用
  14. 多元相关性分析_NAR:宏基因组网络分析工具MetagenoNets
  15. 今天七夕给大家送个“对象”吧!拿走不谢!
  16. 抖音算法推荐机制详解
  17. UC浏览器怎样收藏视频?UC浏览器收藏视频的方法
  18. WordPress二次元Kratos-pjax主题模板源码+
  19. mysql 多个select查询_MySQL的select多表查询
  20. html5设置春联,英文版春节对联

热门文章

  1. 【题解】helloworldroom#4906. 摩尔斯电码
  2. 屏幕取词技术实现原理与关键源码
  3. C1认证学习十八、十九(表单元素、转义字符)
  4. Golang中uint、int, int8, int16, int32, int64区别
  5. 洛谷—— B2008 计算 (a+b)×c 的值(java)
  6. 推荐系统领域相关知识总结
  7. LOAM论文阅读笔记
  8. 【python】修改pip程序默认源为清华源
  9. (转)Exception in thread main java.util.ConcurrentModificationException异常怎么解决?
  10. 自己有工厂,怎样接外贸订单?