医药企业网站建设要哪些备案,网址注册,网站服务器上线后要怎么做,移动端网站开发流程图最新华为OD机试
真题目录#xff1a;点击查看目录 华为OD面试真题精选#xff1a;点击立即查看
华为OD机考双机位C卷
题目描述
一个工厂有m条流水线#xff0c;来并行完成n个独立的作业#xff0c;该工厂设置了一个调度系统#xff0c;在安排作业时#xff0c;总是优…最新华为OD机试真题目录点击查看目录华为OD面试真题精选点击立即查看华为OD机考双机位C卷题目描述一个工厂有m条流水线来并行完成n个独立的作业该工厂设置了一个调度系统在安排作业时总是优先执行处理时间最短的作业。现给定流水线个数m需要完成的作业数n, 每个作业的处理时间分别为t1,t2…tn。请你编程计算处理完所有作业的耗时为多少当nm时首先处理时间短的m个作业进入流水线其他的等待当某个作业完成时依次从剩余作业中取处理时间最短的进入处理。输入描述第一行为2个整数采用空格分隔分别表示流水线个数m和作业数n第二行输入n个整数采用空格分隔表示每个作业的处理时长t1,t2…tn。0 m,n1000t1,t2…tn100。注保证输入都是合法的。输出描述输出处理完所有作业的总时长。示例1输入3 5 8 4 3 2 10输出13说明1、先安排时间为2、3、4的3个作业。2、第一条流水线先完成作业然后调度剩余时间最短的作业8。3、第二条流水线完成作业然后调度剩余时间最短的作业10。4、总工耗时就是第二条流水线完成作业的时间13310。解题思路作业分配如果作业数n小于等于流水线数m则每个作业直接分配给一条流水线处理完的总时间就是所有作业的处理时间。如果作业数n大于流水线数m则优先将处理时间最短的m个作业分配给各条流水线。对于剩下的作业依次从处理时间最短的作业中选择并将其分配到当前处理时间最短的流水线上。每分配一个作业就将该流水线的总时间更新。以示例输入为例3条流水线5个作业处理时间为 [8, 4, 3, 2, 10]排序后的作业时间[2, 3, 4, 8, 10]分配前3个作业给流水线流水线1处理时间 2流水线2处理时间 3流水线3处理时间 4作业完成情况流水线1完成时间2进入下一个作业8更新为10。流水线2完成时间3进入下一个作业10更新为13。最后计算所有流水线上时间的最大值输出13。Javaimportjava.util.Arrays;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){ScannerscannernewScanner(System.in);// 输入流水线个数m和作业数nintnum_of_pipelinesscanner.nextInt();intnum_of_jobsscanner.nextInt();// 输入每个作业的处理时长t1,t2...tnint[]job_timesnewint[num_of_jobs];for(inti0;inum_of_jobs;i){job_times[i]scanner.nextInt();}// 对作业处理时长进行排序Arrays.sort(job_times);// 创建一个长度为流水线个数的数组用于存储每条流水线的总时长int[]total_timenewint[num_of_pipelines];// 如果作业数小于等于流水线个数直接将作业分配到每条流水线上if(num_of_jobsnum_of_pipelines){total_timejob_times;}else{// 将处理时长最短的m个作业分配到每条流水线上total_timeArrays.copyOfRange(job_times,0,num_of_pipelines);// 处理剩余的作业for(intinum_of_pipelines;inum_of_jobs;i){intmin_timeInteger.MAX_VALUE;intindex-1;// 找到处理时长最短的流水线for(intj0;jnum_of_pipelines;j){if(total_time[j]min_time){min_timetotal_time[j];indexj;}}// 将作业分配到处理时长最短的流水线上total_time[index]job_times[i];}}// 找到处理时长最长的流水线intmax_timeInteger.MIN_VALUE;for(inti0;inum_of_pipelines;i){if(total_time[i]max_time){max_timetotal_time[i];}}// 输出处理完所有作业的总时长System.out.println(max_time);}}Pythonnum_of_pipelines,num_of_jobsmap(int,input().split())# 流水线个数作业数job_timeslist(map(int,input().split()))# 每个作业的处理时间job_times.sort()# 按处理时间从小到大排序total_time[]# 记录每个流水线的总耗时ifnum_of_jobsnum_of_pipelines:# 如果作业数小于等于流水线个数total_timejob_times# 每个作业都分配到一个流水线else:total_timejob_times[:num_of_pipelines]# 先将处理时间最短的m个作业分配到流水线foriinrange(num_of_pipelines,num_of_jobs):# 处理剩余的作业min_timemin(total_time)# 找到当前总耗时最小的流水线indextotal_time.index(min_time)# 找到最小耗时的流水线的索引total_time[index]job_times[i]# 将当前作业分配到最小耗时的流水线print(max(total_time))# 输出处理完所有作业的总耗时JavaScriptconstreadlinerequire(readline);constrlreadline.createInterface({input:process.stdin,output:process.stdout});letm,n;lettimes[];rl.on(line,(line){if(!m!n){[m,n]line.trim().split( ).map(Number);}elseif(times.lengthn){times.push(...line.trim().split( ).map(Number));}if(mntimes.lengthn){rl.close();constnum_of_pipelinesm;constnum_of_jobsn;constjob_timestimes;job_times.sort((a,b)a-b);lettotal_timenewArray(num_of_pipelines).fill(0);if(num_of_jobsnum_of_pipelines){total_timejob_times;}else{total_timejob_times.slice(0,num_of_pipelines);for(letinum_of_pipelines;inum_of_jobs;i){letmin_timeInfinity;letindex-1;for(letj0;jnum_of_pipelines;j){if(total_time[j]min_time){min_timetotal_time[j];indexj;}}total_time[index]job_times[i];}}letmax_time-Infinity;for(leti0;inum_of_pipelines;i){if(total_time[i]max_time){max_timetotal_time[i];}}console.log(max_time);}});C#includeiostream#includevector#includealgorithmusing namespace std;intmain(){intnum_of_pipelines,num_of_jobs;cinnum_of_pipelinesnum_of_jobs;vectorintjob_times(num_of_jobs);for(inti0;inum_of_jobs;i){cinjob_times[i];}sort(job_times.begin(),job_times.end());vectorinttotal_time(num_of_pipelines);if(num_of_jobsnum_of_pipelines){total_timejob_times;}else{total_time.assign(job_times.begin(),job_times.begin()num_of_pipelines);for(intinum_of_pipelines;inum_of_jobs;i){intmin_time*min_element(total_time.begin(),total_time.end());intindexdistance(total_time.begin(),find(total_time.begin(),total_time.end(),min_time));total_time[index]job_times[i];}}cout*max_element(total_time.begin(),total_time.end())endl;return0;}Gopackagemainimport(fmtmathsort)funcmain(){varnumOfPipelines,numOfJobsint// 输入流水线个数m和作业数nfmt.Scan(numOfPipelines,numOfJobs)// 输入每个作业的处理时长t1,t2...tnjobTimes:make([]int,numOfJobs)fori:0;inumOfJobs;i{fmt.Scan(jobTimes[i])}// 对作业处理时长进行排序sort.Ints(jobTimes)// 创建一个长度为流水线个数的数组用于存储每条流水线的总时长totalTime:make([]int,numOfPipelines)// 如果作业数小于等于流水线个数直接将作业分配到每条流水线上ifnumOfJobsnumOfPipelines{copy(totalTime,jobTimes)// 补齐剩余的流水线时间为0fori:numOfJobs;inumOfPipelines;i{totalTime[i]0}}else{// 将处理时长最短的m个作业分配到每条流水线上copy(totalTime,jobTimes[:numOfPipelines])// 处理剩余的作业fori:numOfPipelines;inumOfJobs;i{minTime:math.MaxInt32 index:-1// 找到处理时长最短的流水线forj:0;jnumOfPipelines;j{iftotalTime[j]minTime{minTimetotalTime[j]indexj}}// 将作业分配到处理时长最短的流水线上totalTime[index]jobTimes[i]}}// 找到处理时长最长的流水线maxTime:math.MinInt32fori:0;inumOfPipelines;i{iftotalTime[i]maxTime{maxTimetotalTime[i]}}// 输出处理完所有作业的总时长fmt.Println(maxTime)}C语言#includestdio.h#includestdlib.hintcompare(constvoid*a,constvoid*b){return(*(int*)a-*(int*)b);}intmain(){intnum_of_pipelines,num_of_jobs;scanf(%d %d,num_of_pipelines,num_of_jobs);int*job_times(int*)malloc(num_of_jobs*sizeof(int));for(inti0;inum_of_jobs;i){scanf(%d,job_times[i]);}qsort(job_times,num_of_jobs,sizeof(int),compare);int*total_time(int*)malloc(num_of_pipelines*sizeof(int));for(inti0;inum_of_pipelines;i){total_time[i](inum_of_jobs)?job_times[i]:0;}if(num_of_jobsnum_of_pipelines){for(intinum_of_pipelines;inum_of_jobs;i){intmin_timetotal_time[0];intindex0;for(intj1;jnum_of_pipelines;j){if(total_time[j]min_time){min_timetotal_time[j];indexj;}}total_time[index]job_times[i];}}intmax_timetotal_time[0];for(inti1;inum_of_pipelines;i){if(total_time[i]max_time){max_timetotal_time[i];}}printf(%d\n,max_time);free(job_times);free(total_time);return0;}完整用例用例13 5 8 4 3 2 10用例22 4 5 6 7 8用例34 6 1 2 3 4 5 6用例41 3 10 20 30用例55 5 1 2 3 4 5用例610 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20用例76 10 10 9 8 7 6 5 4 3 2 1用例87 8 1 2 3 4 5 6 7 8用例94 15 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75用例108 12 2 4 6 8 10 12 14 16 18 20 22 24文章目录最新华为OD机试题目描述输入描述输出描述示例1解题思路JavaPythonJavaScriptCGoC语言完整用例用例1用例2用例3用例4用例5用例6用例7用例8用例9用例10