Srm 231 div2 900pts

这题很简单,用贪心的。最基本的想法就是任务建立的时间是不能省的,因此应该想办法尽量让这些时间在任务运行的时候被做掉。因此每次可以挑那些任务运行时间长,而建立时间又短的任务来搞。
代码如下:
import java.io.*;
import java.util.*;
import java.util.regex.*;

//srm 231
public class ProgramSchedule {
   public int schedule(int[] A, int[] B) {
		int ans=0;
		Sche[] schs=new Sche[A.length];
		for(int i=0;i<A.length;i++){
			schs[i]=new Sche(B[i],A[i]);
		}
		Arrays.sort(schs);
		
		int runMain=0;
		for(Sche sc:schs){
			if(runMain>=sc.sch){
				runMain=runMain-sc.sch;
				ans+=(Math.max(sc.run,runMain)-runMain);
				runMain=Math.max(sc.run,runMain);
			}else{
				ans+=(sc.sch-runMain);
				runMain=sc.run;	
				ans+=runMain;
			}
		}
		
		return ans;
   }
   
   class Sche implements Comparable<Sche>{
   	int run;
   	int sch;
   	
   	public Sche(int run,int sch){
   		this.run=run;
   		this.sch=sch;
   	}
   	
   	public int compareTo(Sche sc){
   		if(run>sc.run)
   			return -1;
   		if(run<sc.run)
   			return 1;
   		if(sch<sc.sch)
   			return -1;
   		if(sch>sc.sch)
   			return 1;	
   		
   		return 0;			
   	}
   }
}

你可能感兴趣的:(java)