USACO 4.2 job processing
来源:互联网 发布:球球大作战php源码 编辑:程序博客网 时间:2024/05/17 00:00
A factory is running a production line that requires two operations to be performed on each job: first operation "A" then operation "B". Only a certain number of machines are capable of performing each operation.
Give the earliest time operation "A" can be completed for all N jobs provided that the jobs are available at time 0. Compute the minimal amount of time that is necessary to perform both operations (successively, of course) on all N jobs.
PROGRAM NAME: job
INPUT FORMAT
Line 1:Three space-separated integers:- N, the number of jobs (1<=N<=1000).
- M1, the number of type "A" machines (1<=M1<=30)
- M2, the number of type "B" machines (1<=M2<=30)
SAMPLE INPUT (file job.in)
5 2 31 1 3 1 4
OUTPUT FORMAT
A single line containing two integers: the minimum time to perform all "A" tasks and the minimum time to perform all "B" tasks (which require "A" tasks, of course).SAMPLE OUTPUT (file job.out)
3 5
关于求A的最短时间,最先想到的是DP,而总时间的最小值该怎么求一直没有好的思路,感觉这个问题和4.1的fence rail 有些相似,最后只好搜索加剪枝,前6个点能过,第7个点超时,后来听ZZY说这个可以用贪心,再上网看了些解题报告,终于豁然开朗。在此推荐一个解释得比较清晰的博客:http://magicalcode.blogbus.com/logs/37193487.html
下面是我的代码:
#include<cstdio>#include<algorithm>#define oo 1000000using namespace std;FILE *in,*out;int n,a,b,ta[30],tb[30],cost[30],tableA[10001],tableB[10001];void greedy(int *arr,int len,int *rec);bool cmp(const int &a,const int & b);int main(){ in=fopen("job.in","r"); out=fopen("job.out","w"); fscanf(in,"%d%d%d",&n,&a,&b); for(int i=0;i<a;i++) fscanf(in,"%d",&ta[i]); for(int i=0;i<b;i++) fscanf(in,"%d",&tb[i]); greedy(ta,a,tableA); greedy(tb,b,tableB); int max=0; sort(tableA,tableA+n); fprintf(out,"%d ",tableA[n-1]); sort(tableB,tableB+n,cmp); for(int i=0;i<n;i++) if(max<(tableA[i]+tableB[i])) max=tableA[i]+tableB[i]; fprintf(out,"%d\n",max); fclose(in); fclose(out); return 0;}void greedy(int *arr,int len,int *rec){ for(int i=0;i<len;i++) cost[i]=0; for(int i=0;i<n;i++) { int min=oo; int index; for(int j=0;j<len;j++) { if(min>cost[j]+arr[j]) { min=cost[j]+arr[j]; index=j; } } cost[index]=min; rec[i]=min; }}bool cmp(const int &a,const int & b){ return a>b;}
- USACO 4.2 job processing
- usaco 4.2 Job Processing 贪心
- usaco 4.2 Job Processing(贪心)
- USACO Section 4.2 Job Processing
- usaco 4.2.3 Job Processing
- USACO Section 4.2 Job Processing - 贪心
- usaco training 4.2.3 Job Processing 题解
- USACO-Section 4.2 Job Processing (贪心)
- USACO Job Processing
- usaco Job Processing(mark)
- USACO Job Processing 解题报告
- USACO 4.2 Job Processing 工序安排(贪心-堆)
- C++——【USACO 4.2.3】——Job Processing
- USACO Training 4.2.3 Job Processing 工序安排 题解与分析
- Job Processing
- usaco--job
- USACO4.2.3 Job Processing (job)
- USACO4.2.3 Job Processing (job)
- How to use jquery template js
- 判断接入的网络类型(wap,net,wifi)
- oracle中直接访问sqlserver的数据
- Android查看当前显示哪个Activity
- jpetstore例子运行记录
- USACO 4.2 job processing
- tu
- 选择排序
- 下载Tomcat源码后,编译时找不到JDT的解决办法
- create a new virtual machine & install a guest OS(ESX)
- Yacc 与 Lex 快速入门(词法分析和语法分析)
- Sed学习笔记--转自http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/sed.htm
- ExtJs textfield 设置边框的样式
- R中的矩阵运算-基本运算