本着再凉也要记录的原则,我又来了。
第一题: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) 回帖