首页 > 网易互娱产品开发09.22笔试
头像
shining4code
编辑于 2020-09-22 22:27
+ 关注

网易互娱产品开发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;
	}
}
第三题:海盗啥的,还会有人死,整个题目就和这个考试一样让人心凉。
没做。

全部评论

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

推荐话题

相关热帖

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

热门推荐