usaco 4.2.3 Job Processing
来源:互联网 发布:js new date 前一天 编辑:程序博客网 时间:2024/05/16 13:43
/*ID: daniel.20LANG: JAVATASK: job*/import java.util.*;import java.io.*;class problem2{ StringBuilder sb = new StringBuilder(); int m,m1,m2; int costA[] = new int[50]; int costB[] = new int[50]; void solver() throws IOException{ long start = System.currentTimeMillis(); BufferedReader reader = new BufferedReader(new FileReader("job.in")); StringTokenizer st = new StringTokenizer(reader.readLine()); m=Integer.valueOf(st.nextToken()); int timer[] = new int[m+1]; int timerB[] = new int[m+1]; m1=Integer.valueOf(st.nextToken()); m2=Integer.valueOf(st.nextToken()); st = new StringTokenizer(reader.readLine()); for(int i=0;i<m1;i++){ costA[i] = Integer.valueOf(st.nextToken()); } st = new StringTokenizer(reader.readLine()); for(int i=0;i<m2;i++){ costB[i] = Integer.valueOf(st.nextToken()); } int tmp[] = Arrays.copyOf(costA, m1); int counter=0; int sum=0; while(true){ counter++; for(int i=0;i<tmp.length;i++){ tmp[i]--; if(tmp[i]==0){ sum++; timer[sum]=counter; tmp[i]=costA[i]; if(sum==m) break; } } if(sum==m) break; } System.out.println(counter); sb.append(counter).append(" "); int delay[] = new int[m2+1]; sum=m; counter=0; while(sum>0){ int kk=999999999,pos=-1; for(int i=1;i<=m2;i++){ if(delay[i]+costB[i-1]<kk){ kk=delay[i]+costB[i-1]; pos=i; } } delay[pos]+=costB[pos-1]; timerB[sum--]=kk; } int max = -1; for(int i=1;i<=m;i++){ if(timer[i]+timerB[i]>max){ max = timer[i]+timerB[i]; } } System.out.println(max); sb.append(max); PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("job.out"))); pw.println(sb.toString()); pw.close(); System.out.println("$:"+(System.currentTimeMillis()-start)); System.exit(0); }}public class job { public static void main(String[] args) throws Exception { problem2 p = new problem2(); p.solver(); }}
哎,智商被碾压,做完以后感觉智商归零
换一个角度想问题就好解决了。
做第一问的时候,贪心的方法是N个机器同时开始工作,时间轴走动,当最先做完m个货物的时候,这个时间就是所需要的最大时间
做第二问的时候,先假设B也是同时开始处理所有货物,然后要求得每个货物是在第几秒完成的
要得到最终结果就是要加上A机器的延时,无疑是倒过来加的,因为总共M个货物,无论如何必须做完
就这个小转化使得思维很明朗,我想了半天第二问都不会转化。悲剧啊
0 0
- usaco 4.2.3 Job Processing
- USACO 4.2 job processing
- usaco training 4.2.3 Job Processing 题解
- usaco 4.2 Job Processing 贪心
- usaco 4.2 Job Processing(贪心)
- USACO Section 4.2 Job Processing
- C++——【USACO 4.2.3】——Job Processing
- USACO Section 4.2 Job Processing - 贪心
- USACO-Section 4.2 Job Processing (贪心)
- USACO Job Processing
- usaco Job Processing(mark)
- USACO Job Processing 解题报告
- USACO Training 4.2.3 Job Processing 工序安排 题解与分析
- USACO 4.2 Job Processing 工序安排(贪心-堆)
- Job Processing
- usaco--job
- USACO4.2.3 Job Processing (job)
- USACO4.2.3 Job Processing (job)
- Ubuntu 12.04下安装配置Python 2.7集成开发环境Eric4
- 0702-APP-notification-service
- Android 消息系统解析(Handler.class及相关类源码解析)
- 史上最全:Android开发者必知的开发资源
- 从设计模式角度看ArcGIS Engine
- usaco 4.2.3 Job Processing
- 冒泡排序
- QT 之 QImage类
- Include设置layout_*无效解决方法
- oracle基本管理(3)
- Python3.2 实现基于KNN算法的数据分类
- CString::SpanIncluding函数的使用
- 数据结构-概述(1)
- oracle基本管理(4)