usaco4.2.3 Job Processing
来源:互联网 发布:gagamatch网络异常 编辑:程序博客网 时间:2024/05/20 10:11
一 原题
IOI'96
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
二 分析
给定N个零件,M台机器,可以贪心(根据机器i结束当前加工的时间t[i]加上生产一个零件的时间s[i])求出每个零件加工完成的时间T[i]。如果有两道工序A,B,只需要将工序A里最慢的交给工序B里最快的即可,即答案等于max{Ta[i] + Tb[n-1-i]}。
三 代码
运行结果:
USER: Qi Shen [maxkibb3]TASK: jobLANG: C++Compiling...Compile: OKExecuting... Test 1: TEST OK [0.000 secs, 4188 KB] Test 2: TEST OK [0.000 secs, 4188 KB] Test 3: TEST OK [0.000 secs, 4188 KB] Test 4: TEST OK [0.000 secs, 4188 KB] Test 5: TEST OK [0.000 secs, 4188 KB] Test 6: TEST OK [0.000 secs, 4188 KB] Test 7: TEST OK [0.000 secs, 4188 KB] Test 8: TEST OK [0.000 secs, 4188 KB] Test 9: TEST OK [0.000 secs, 4188 KB] Test 10: TEST OK [0.000 secs, 4188 KB] Test 11: TEST OK [0.000 secs, 4188 KB] Test 12: TEST OK [0.000 secs, 4188 KB]All tests OK.Your program ('job') produced all correct answers! This is yoursubmission #6 for this problem. Congratulations!
AC代码:
/*ID:maxkibb3LANG:C++PROB:job*/#include<cstdio>const int MAXN = 1005;const int MAXM = 35;const int INF = 0x7fffffff;int n, m[2];int a[2][MAXM];int t[2][MAXM];int s[2][MAXN];int max(int n1, int n2) { return (n1 > n2) ? n1 : n2;}void init() { scanf("%d%d%d", &n, &m[0], &m[1]); for(int i = 0; i < m[0]; i++) scanf("%d", &a[0][i]); for(int i = 0; i < m[1]; i++) scanf("%d", &a[1][i]);}void f(int idx) { for(int i = 0; i < n; i++) { int min_val = INF, min_idx; for(int j = 0; j < m[idx]; j++) { if(t[idx][j] + a[idx][j] < min_val) { min_val = t[idx][j] + a[idx][j]; min_idx = j; } } s[idx][i] = t[idx][min_idx] = min_val; }}void solve() { f(0); f(1); int max_val = 0; for(int i = 0; i < n; i++) { if(s[0][i] > max_val) max_val = s[0][i]; } printf("%d ", max_val); max_val = 0; for(int i = 0; i < n; i++) { if(s[0][i] + s[1][n - 1 -i] > max_val) max_val = s[0][i] + s[1][n - 1- i]; } printf("%d\n", max_val);}int main() { freopen("job.in", "r", stdin); freopen("job.out", "w", stdout); init(); solve(); return 0;}
0 0
- usaco4.2.3 Job Processing
- [USACO4.2.3]Job Processing
- USACO4.2.3 Job Processing (job)
- USACO4.2.3 Job Processing (job)
- USACO4.2.3/job
- Job Processing
- USACO Job Processing
- USACO 4.2 job processing
- usaco Job Processing(mark)
- usaco 4.2 Job Processing 贪心
- usaco 4.2 Job Processing(贪心)
- USACO Section 4.2 Job Processing
- usaco 4.2.3 Job Processing
- USACO Job Processing 解题报告
- USACO Section 4.2 Job Processing - 贪心
- usaco training 4.2.3 Job Processing 题解
- USACO-Section 4.2 Job Processing (贪心)
- ERROR common.AbstractJob: Unexpected SIMILARITY_EUCLIDEAN_DISTANCE while processing Job-Specific Opt
- HDU2084 数塔
- Spring 和Struts2 整合 特别需要关注Session 关闭的问题:解决方法是使用 OpenSessionInViewFilter
- CentOS搭建Shadowsocks服务-实现科学上网
- 第一篇
- hdu5112水题
- usaco4.2.3 Job Processing
- shader中一些光照模型
- Java中的main函数详细讲解
- 2
- 关于Navicat Premium破解问题(已解决)
- 小程序踩坑手册1
- linux device tree相关
- [Prufer数列] BZOJ1005: [HNOI2008]明明的烦恼
- pygame从入门到放弃(一)