华为OD机试真题 - 执行时长
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int GPU = scanner.nextInt();
int runableCount = scanner.nextInt();
PriorityQueue priorityQueue = new PriorityQueue<Integer>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
for (int i = 0; i < runableCount; i++) {
priorityQueue.add(scanner.nextInt());
}
System.out.println(getMinTime(GPU, priorityQueue));
}
public static int getMinTime(int GPUCount, PriorityQueue<Integer> runables) {
GPUPoll poll = new GPUPoll(GPUCount);
int i = 0;
while (!runables.isEmpty()) {
while (poll.hasBanancePoll() != -1) {
if (runables.peek() != null)
poll.poll[poll.hasBanancePoll()] = runables.poll();
else break;
}
poll.execut();
i++;
}
i += poll.getMaxTime();
return i;
}
static class GPUPoll {
int[] poll;
public GPUPoll(int count) {
this.poll = new int[count];
}
public void execut() {
for (int i = 0; i < poll.length; i++) {
poll[i] -= 1;
}
}
public int hasBanancePoll() {
for (int i = 0; i < poll.length; i++) {
if (poll[i] == 0)
return i;
}
return -1;
}
public int getMaxTime() {
int max = Integer.MIN_VALUE;
for (int i = 0; i < poll.length; i++) {
if (poll[i] > 0) {
max = Math.max(max,poll[i]);
}
}
return max;
}
}
Scanner scanner = new Scanner(System.in);
int GPU = scanner.nextInt();
int runableCount = scanner.nextInt();
PriorityQueue priorityQueue = new PriorityQueue<Integer>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
for (int i = 0; i < runableCount; i++) {
priorityQueue.add(scanner.nextInt());
}
System.out.println(getMinTime(GPU, priorityQueue));
}
public static int getMinTime(int GPUCount, PriorityQueue<Integer> runables) {
GPUPoll poll = new GPUPoll(GPUCount);
int i = 0;
while (!runables.isEmpty()) {
while (poll.hasBanancePoll() != -1) {
if (runables.peek() != null)
poll.poll[poll.hasBanancePoll()] = runables.poll();
else break;
}
poll.execut();
i++;
}
i += poll.getMaxTime();
return i;
}
static class GPUPoll {
int[] poll;
public GPUPoll(int count) {
this.poll = new int[count];
}
public void execut() {
for (int i = 0; i < poll.length; i++) {
poll[i] -= 1;
}
}
public int hasBanancePoll() {
for (int i = 0; i < poll.length; i++) {
if (poll[i] == 0)
return i;
}
return -1;
}
public int getMaxTime() {
int max = Integer.MIN_VALUE;
for (int i = 0; i < poll.length; i++) {
if (poll[i] > 0) {
max = Math.max(max,poll[i]);
}
}
return max;
}
}
全部评论
相关推荐
06-16 18:15
湖南人文科技学院 Java 湫湫湫不会java:1.在校经历全删了2.。这些荣誉其实也没啥用只能说,要的是好的开发者不是好好学生3.项目五六点就行了,一个亮点一俩行,xxx技术解决,xxx问题带来xxx提升。第一页学历不行,然后啥有价值的信息也没有,到第二页看到项目了,第一个项目九点,第二个项目像凑数的俩点。总体给人又臭又长,一起加油吧兄弟
点赞 评论 收藏
分享