网易互娱产品开发09.22笔试
本着再凉也要记录的原则,我又来了。
第一题:m个点,m-1条折线,分割成n段,输出分割点。要求半段
调来调去0%。更惨的是
第二题:任务和子任务,求执行时间最长的任务。调来调去90%+
子任务要比父任务先执行完,每个任务都要有开始和执行完毕时间,否则输出error
不嫌弃的话,各位大佬帮忙看看代码(不知道为啥ak不了
package wangyihuyu;
import java.util.*;
public class Second {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=Integer.valueOf(in.nextLine());
LinkedHashMap<Integer, Integer> start_time=new LinkedHashMap<>();
LinkedHashMap<Integer, Integer> end_time=new LinkedHashMap<>();//任务的开始和结束花了多少时间
LinkedList<Integer> stack=new LinkedList<>();//检查是否早开始晚结束
int[] tasks=new int[n/2];//存放任务id
int index=0;//tasks标志位
for(int i=0;i<n;i++) {
String temp=in.nextLine();
String[] split = temp.split(" ");
if(split.length<3) {
System.out.println("error");
return;
}
int t=Integer.valueOf(split[0]);
int e=Integer.valueOf(split[1]);
int s=Integer.valueOf(split[2]);
if(s==0) {
start_time.put(e,t);
tasks[index++]=e;
stack.add(e);
}
else {
end_time.put(e, t);
if(stack.getLast()==e) stack.removeLast();
}
}
if(stack.size()!=0) {
System.out.println("error");
return;
}
int res=findMax(start_time,end_time,tasks);
System.out.println(res);
}
public static int findMax(LinkedHashMap<Integer, Integer> start_time, LinkedHashMap<Integer, Integer> end_time, int[] tasks) {
int n=tasks.length;
int[] time=new int[n];
int max=0;
int pos=0;
for(int i=n-1;i>=0;i--) {
time[i]=end_time.get(tasks[i])-start_time.get(tasks[i]);
for(int j=n-1;j>i;j--) {
if(end_time.get(tasks[j])<=end_time.get(tasks[i])) time[i]-=time[j];
}
if(time[i]>max) {
max=time[i];
pos=tasks[i];
}
}
return pos;
}
} 第三题:海盗啥的,还会有人死,整个题目就和这个考试一样让人心凉。 没做。
#网易互娱##笔试题目#
