首页 > 2021.4.10 滴滴笔试编程
头像
appleyes
编辑于 2021-04-19 11:47
+ 关注

2021.4.10 滴滴笔试编程

一、
优秀的操作系统离不开优秀的任务调度算法。现在,有一台计算机即将执行n个任务,每个任务都有一个准备阶段和执行阶段。
只有在准备阶段完成后,执行阶段才可以开始。同一时间,计算机只能执行一个任务的执行阶段,同时可以执行任意多个任务的准备阶段。
请你设计一个算法,合理分配任务执行顺序,并输出完成所有任务的最少时间。

第一行一个整数n表示任务的数量(1<=n<=5*10^4)

接下来n行每行两个整数a,b表示第i个任务的准备时长和执行时长。(1<=a,b<=10^9)

答:按准备时间从小到大排序,一样则按执行时间从大到小排序,一句话就是尽量处于执行状态

二、
小A的家门口有一排树,每棵树都有一个正整数的高度。由于树的高度不同,来到小A家的朋友都觉得很难看。
为了将这些树高度变得好看,小A决定对其中某些树施展魔法,具体来说,每施展一次魔法,可以把一棵树的高度变成任意正整数(可以变高也可以变低)。
小A认为,这排树如果能构成等差为x的等差数列就好看了。但是小A不想施展太多次魔法,他想知道最少施展魔法的次数。

输入第一行包含两个正整数,n和x,含义如题面所示。
输入第二行包含n个正整数,第i个数的含义为第i棵树的高度ai
输出包含一个正整数,即小A最少施展魔法的次数

范围:n≤10^5, 1≤ai≤10^5, x≤1000

(通过64%)超时:定义访问数组,对每一颗树固定高度访问其他的树,如果其他的树的高度符合等差的要求,之后就不必在访问那棵树了,记录不符合的树的数量,去所有不符合数量中最小的那个。
有大佬指点一下应该怎么写比较好吗?


全部评论

(3) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐