UVA - 11729 Commando War
2015-08-28 14:35
211 查看
来自v_judge题目,
地址是:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28436
建议和1038.
Recover the Smallest Number (30)一起看,思想上有相同之处
你是一个长官,需要给n个士兵分配任务,对于士兵i,你解释这个任务需要t[i]的时间,士兵执行这个任务需要e[i]的时间,然后希望你找出最佳方案,使总的执行时间最短。
总共有n!中可能,如果一开始就想着如何得到最终的结果,那会考虑得很痛苦,我们最好这样想,给你一个士兵的序列,如何去优化它,现在只考虑序列上两个相邻的士兵,Max是两个士兵执行完任务需要的时间,如果我们调换两个士兵的位置能使两个士兵的Max减少,那我们就算是优化了这个序列,尽管这种优化未必会对最终答案产生影响。可以证明这种优化是有传递性的,如果soldierA应当在soldierB,前面,soldierB应当在soldierC前面,那么soldierA也应当在soldierC,反复迭代,会获得一个无法再优化的序列。这就是最终的序列。
但在解题时我们会直接排序。
地址是:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28436
建议和1038.
Recover the Smallest Number (30)一起看,思想上有相同之处
你是一个长官,需要给n个士兵分配任务,对于士兵i,你解释这个任务需要t[i]的时间,士兵执行这个任务需要e[i]的时间,然后希望你找出最佳方案,使总的执行时间最短。
总共有n!中可能,如果一开始就想着如何得到最终的结果,那会考虑得很痛苦,我们最好这样想,给你一个士兵的序列,如何去优化它,现在只考虑序列上两个相邻的士兵,Max是两个士兵执行完任务需要的时间,如果我们调换两个士兵的位置能使两个士兵的Max减少,那我们就算是优化了这个序列,尽管这种优化未必会对最终答案产生影响。可以证明这种优化是有传递性的,如果soldierA应当在soldierB,前面,soldierB应当在soldierC前面,那么soldierA也应当在soldierC,反复迭代,会获得一个无法再优化的序列。这就是最终的序列。
但在解题时我们会直接排序。
# include <cstdio> # include <algorithm> using namespace std; const int size = 1050; struct soldier { int brief,execute; /*一直不知道brief还有动词用法,意为简要介绍,涨姿势了*/ bool operator < (const soldier& cmper) const { int t1 = max(brief + execute,brief + cmper.brief + cmper.execute); int t2 = max(cmper.brief + cmper.execute,cmper.brief + brief + execute); return t1 < t2; } }; soldier s[size]; int main() { int i,j,k; int n,ncase = 0,Max; while (scanf("%d",&n)&&n) { for (i=0;i<n;i++) scanf("%d%d",&s[i].brief,&s[i].execute); sort(s,s+n); Max = s[0].brief + s[0].execute; for (i=1;i<n;i++) { s[i].brief += s[i-1].brief; Max = max(Max,s[i].brief+s[i].execute); } printf("Case %d: %d\n",++ncase,Max); } return 0; }
相关文章推荐
- PHP面向对象之朝花夕拾
- iOS开发:创建真机调试证书
- NodeJS优缺点及适用场景讨论
- waiting for device
- 使用HttpClient发送请求、接收响应
- Visual Assist+VS2012破解
- Spring注解
- 例题3.14 出现次数最多的子串 LA4670
- ios--本地通知
- 既然nodejs是单线程的,那么它怎么处理多请求高并发的?
- Java基础——Java对象的序列化和反序列化
- Quartz2D绘制view
- Ubuntu 配置 OpenGrok 环境
- php的表单提交之上传文件
- 字符串取整数前补0
- 各个安卓版本 使用的 Linux Kernel Version
- 九度oj 题目1475:IP数据包解析
- Changer常用的软件
- 3.4 从无头链表中删除给定的结点 & 遍历一次逆转链表
- mongo和pymongo简单配置和使用