关注
比较任意两个加速块,哪个在前走的距离更远,根据这个比较维护一个最大堆,最大堆的的元素就是加速块。 在计算的时候最终位移的时候,弹出一个加速块,计算唯一,维持经过这个加速块后的速度,并把经过这个加速块的位移加到最终的位移上去。 import java.util.*;
public class Main {
private static Scanner input;
public static void main(String[] args) {
input = new Scanner(System.in);
int N = input.nextInt();
PriorityQueue<int[]> queue = new PriorityQueue<>(N, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
//o1 在 o2 前
double l1 = 0.5 * o1[0] * o1[1] * o1[1];
double v1 = o1[0] * o1[1];
double l2 = v1 * o2[1] + 0.5 * o2[0] * o2[1] * o2[1];
// o2 在 o1 前
double L1 = 0.5 * o2[0] * o2[1] * o2[1];
double V1 = o2[0] * o2[1];
double L2 = v1 * o1[1] + 0.5 * o1[0] * o1[1] * o1[1];
return (int)(l1 + l2 - L1 - L2);//维护一个最大堆
}}
);
int[] cell = null;
for(int i = 0; i < N; i++) {
cell = new int[2];
cell[0] = input.nextInt();
cell[1] = input.nextInt();
queue.offer(cell);
}
double distance = 0;
double x = 0;
double v = 0;
while(!queue.isEmpty()) {
int[] block = queue.poll();
x = v * block[1] + 0.5 * block[0] * block[1] * block[1];// x = v0 * t + 0.5 * a * t * t
v = v + block[0] * block[1]; //v = v + a * t 保持经过一个加速块后的速度
distance += x;
}
System.out.printf("%.1f", distance);
}
}
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 国企还是互联网,你怎么选? #
122197次浏览 941人参与
# 找工作,行业重要还是岗位重要? #
8139次浏览 105人参与
# 五一之后,实习真的很难找吗? #
46464次浏览 335人参与
# 盲审过后你想做什么? #
12867次浏览 115人参与
# 领导秒批的请假话术 #
10106次浏览 76人参与
# 小厂实习有必要去吗 #
42293次浏览 260人参与
# 设计人如何选offer #
98499次浏览 690人参与
# 外包能不能当跳板? #
22222次浏览 191人参与
# 五一假期,你打算“躺”还是“卷”? #
32277次浏览 445人参与
# 考研可以缓解求职焦虑吗 #
21363次浏览 252人参与
# 如果校招重来我最想改变的是 #
245236次浏览 2781人参与
# 面试等了一周没回复,还有戏吗 #
115779次浏览 1076人参与
# 如果有时光机,你最想去到哪个年纪? #
43389次浏览 770人参与
# 大疆的机械笔试比去年难吗 #
69686次浏览 603人参与
# 找工作前vs找工作后的心路变化 #
7223次浏览 64人参与
# 硬件人,你被哪些公司给挂了 #
46824次浏览 724人参与
# 秋招前后对offer的期望对比 #
271764次浏览 2075人参与
# 写简历别走弯路 #
714670次浏览 7850人参与
# 应届生薪资多少才合理? #
3134次浏览 24人参与
# 每人推荐一个小而美的高薪公司 #
72874次浏览 1357人参与