UVa 11729 Commando War
来源:互联网 发布:软交换网络各节点功能 编辑:程序博客网 时间:2024/05/09 18:50
-
来源:《算法竞赛入门经典训练指南》第1章例题2、UVa 11729
题目描述:
n个任务,每个任务需要
题目分析:
每个任务的两个属性捆绑为一个pair,按照执行时长从大到小排序,接着一项一项交待并执行,计算出完成任务的时间就是所要求的最短时长.
算法正确性的严格证明与任务调度相似,去证明任何改变上面算法构造出来的任务序列的操作都不会得到更好的结果.
一种简单的理解方式是:交待任务所需的时间是死的,因此从某种意义上说最终结束的时间决定于任务执行的时长,因此执行时间长的任务放在后面肯定是不利的.具体证明就是写出不等式,回到上面提到的与任务调度相似的证法.本题属于贪心算法题,但算作所谓[构造题]也无不可.
// Created by wander on 16/06/20.// Copyright © 2016年 W4anD0eR96. All rights reserved.// From: UVa 11729// Sort: Greedy#include "bits/stdc++.h"using namespace std;typedef pair< int, int > P;const int MAXN = 1020;int n, kase, s, res;P Jobs[MAXN]; // first表示任务执行所需时间,second表示任务交代所需时间int main() {#ifdef DEBUG freopen("in", "r", stdin); freopen("out", "w", stdout);#endif while (~scanf("%d", &n) && n) { for (int i = 0; i < n; i += 1) scanf("%d%d", &Jobs[i].second, &Jobs[i].first); sort(Jobs, Jobs + n, greater<P>()); s = res = 0; for (int i = 0; i < n; i += 1) { s += Jobs[i].second; // 当前任务开始执行的时间 res = max(res, s + Jobs[i].first); // 更新任务执行完毕时的最晚时间 } printf("Case %d: %d\n", kase += 1, res); } return 0;}
0 0
- uva --11729-- Commando War
- UVa 11729 Commando War
- uva - 11729 - Commando War
- UVA 11729 - Commando War
- uva 11729 - Commando War
- Uva-11729-Commando War
- UVA 11729 - Commando War
- UVA 11729 Commando War
- UVA 11729 - Commando War
- UVA 11729 Commando War
- UVA 11729 - Commando War
- Commando War, UVa 11729
- UVa 11729 - Commando War
- UVA 11729 Commando War
- uva 11729 Commando War
- Uva 11729 Commando War
- uva 11729 Commando War
- UVA - 11729 Commando War
- RobotArt让机器人写字的神秘故事
- openwrt 设置IP,通过源代码
- UIAccelerometer 加速计
- FAQ11272][Audio App]微信语音通话(听筒模式),音量侧键不能调音量
- nodejs基础: 如何升级Noejs版本
- UVa 11729 Commando War
- Android使用Application总结
- 计算机网络的cookie理解
- android容联云IM会话界面chattingFragment修改的简单介绍
- 1、顺(逆)时针旋转MxN矩阵
- Share 分享 UM 分享
- 第十三周项目:形状类族的中的纯虚函数
- Linux下进程间通信
- 36、JavaScript中两个DIV的碰撞检测