usaco 4.2 Job Processing 贪心
来源:互联网 发布:go并发编程实战 下载 编辑:程序博客网 时间:2024/04/30 05:39
这道题目的思想是贪心,如果只有一道工序,那么很容易想到,只需要每次用当前空闲,并且能最早完成任务的机器处理即可,现在有两台机器,应该如何处理?
先看下面一个简单的引理:
对于两数组a[n],b[n], a[n]按升序排列,b[n]按降序排列,设数组c[i] = a[i] + b[i],则将an和bn分别重新排列后,再次得到 d[i] =a`[i]+b`[i],则 max(cn) < max(dn), 证明比较简单,从略。
现在来看原问题,分别对A工序和B工序求出完成k个零件的最短时间(1<=k<=n)ta[k], tb[k],将其从小到大排序,
则有结论:两道工序完成n个零件的最小时间是 max{ ta[k], ta[n+1-k] }
- #include <iostream>
- #include <algorithm>
- using namespace std;
- /*
- PROG: job
- LANG: C++
- ID: heben991
- */
- const int N = 2200;
- int n, m[2], need[2][N], finish[2][N], process[2][N];
- int main()
- {
- int i, j, k, x, y, num, minp, mint, now;
- freopen("job.in", "r", stdin);
- freopen("job.out","w",stdout);
- scanf("%d%d%d", &n, &m[0], &m[1]);
- for(i = 0; i < 2; ++i)
- {
- for(j = 1; j <= m[i]; ++j) scanf("%d", need[i]+j);
- }
- for(i = 0; i < 2; ++i)
- {
- for(j = 1; j <= n; ++j)
- {
- mint = process[i][1]+need[i][1];
- minp = 1;
- for(k = 2; k <= m[i]; ++k)
- if(process[i][k]+need[i][k] < mint)
- {
- mint = process[i][k]+need[i][k];
- minp = k;
- }
- process[i][minp] = mint;
- finish[i][j] = mint;
- }
- }
- int ans = finish[0][1]+finish[1][n];
- for(i = 2; i <= n; ++i)
- ans >?= finish[0][i] + finish[1][n+1-i];
- printf("%d %d/n", finish[0][n], ans);
- return 0;
- }
- usaco 4.2 Job Processing 贪心
- usaco 4.2 Job Processing(贪心)
- USACO Section 4.2 Job Processing - 贪心
- USACO-Section 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 training 4.2.3 Job Processing 题解
- USACO Job Processing
- usaco Job Processing(mark)
- USACO 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)
- 目前层面上对windows的理解
- 输入框日期选择控件
- 如何在WINCE5.0下显示图片
- 总结一下
- IImage和链接错误
- usaco 4.2 Job Processing 贪心
- 简单的内核shell
- ASP.Net开发新手常见问题备忘录
- COOKIE脚本记录JS脚本
- 出现错误的解决方法:
- asp.net 在使用repeater控件时截取绑定字符方法
- 如何阅读别人的代码(转)
- Eclipse 快捷键 记录
- 护肤养颜十“要诀”