2019拼多多暑期实习生机试题-03 避嫌抢劫(java)
发布日期:2021-06-20 05:37:09
浏览次数:4
分类:技术文章
本文共 1650 字,大约阅读时间需要 5 分钟。
题目描述:
小镇沿街分布(可以理解为都在数轴上,有n家银行(位置以数轴的坐标表示,金额表示可以被抢走的金题),两个绑匪试图分别抢动一个银行为了让警方多奔波他们高定选择的两个银行距离不小于d,请问符合约定的情况下他们能抢到的总金额最大是多少?
输入描述:
输入包括n+1行。 第一行包含两个数字n和d (1≤n≤2000000 ,1<d<10000000) n表示银行的数量,d表示约定的距离 下面n行,每一行包括两个数字a,b(1 < a,b < 0000000)分别表示坐标和金额,空格分隔。输出描述
输出一个数字,表示可以获得的最大金额。分析:
这种题做法类似滑动窗口,题目中输入不保证按银行坐标准许输入,所以我们需要先排序。
import java.util.*;/** * @author: Mr.Hu * @create: 2019-03-13 21:10 */public class Main{ public static void main(String[] args) { Scanner sc =new Scanner(System.in); while (sc.hasNextInt()){ int n=sc.nextInt(),d=sc.nextInt(); Banck[] bancks=new Banck[n]; int preMax=0,backMax=0; for (int i = 0; i < n; i++) { // 计算前面最大值 存储数组 Banck banckTemp=new Banck(sc.nextInt(),sc.nextInt()); if (banckTemp.money>preMax) preMax=banckTemp.money; //更新最大值 banckTemp.preMax=preMax; bancks[i]=banckTemp; } Arrays.sort(bancks); int result=0; for (int i = 0,j=0; i < n; i++) { int lMax=0; while ( (bancks[i].n-bancks[j].n)>d ) j++; //重点:每次只需走一小节就好 lMax=bancks[j].preMax; int resultTemp= lMax+bancks[i].money; if (resultTemp>result) result=resultTemp; } System.out.println(result); } }}class Banck implements Comparable{ int n; int money; int preMax; @Override public int compareTo(Banck o) { return this.n>o.n?1:-1; } public Banck(int n, int money) { this.n = n; this.money = money; }}
转载地址:https://blog.csdn.net/h2453532874/article/details/88532050 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月18日 10时40分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
第四届工业大数据创新竞赛-注塑成型工艺的虚拟量测和调机优化-决赛排名22
2019-04-26
大数据时代的Serverless工作负载预测-排名80_0.313
2021-06-29
python爬虫爬取_腾讯位置大数据_人口迁徙图16年至今数据
2021-06-29
python爬虫爬取_高德地图_主要城市迁徙意愿排行榜_19年至今数据
2021-06-29
联通手机信令大数据的处理分析与可视化
2021-06-29
CNC机床刀具寿命预测
2021-06-29
Python遗传算法求解TSP旅行商问题——全国主要城市交通最短路径
2021-06-29
LeetCode题解(1114):多线程按序打印(Python)
2021-06-29
LeetCode题解(1122):数组的相对排序(Python)
2021-06-29
LeetCode题解(1128):等价多米诺骨牌对的数量(Python)
2021-06-29
LeetCode题解(1137):计算斐波那契数列(Python)
2021-06-29
LeetCode题解(1154):判断日期在一年中的第几天(Python)
2021-06-29
LeetCode题解(1160):判断可由指定字母拼写的所有单词总长(Python)
2021-06-29
LeetCode题解(1170):比较字符串最小字母的出现频次(Python)
2021-06-29
LeetCode题解(1175):质数排列(Python)
2021-06-29
LeetCode题解(1179):重新格式化部门表(SQL)
2021-06-29
LeetCode题解(1184):公交站间的距离(Python)
2021-06-29
LeetCode题解(1185):依据日期判断是星期几(Python)
2021-06-29
LeetCode题解(1422):分割字符串的最大得分(Python)
2019-04-26
LeetCode题解(1436):旅行终点站-寻找循环的终点(Python)
2019-04-26