1446. [Commando War,Uva 11729]突击战

★   输入文件:commando.in   输出文件:commando.out   简单对比
时间限制:1 s   内存限制:64 MB

【题目描述】

你有n个部下,每个部下需要完成一项任务。第i个部下需要你花Bi分钟交代任务,然后他会立刻独立地,无间断的执行Ji分钟后完成任务。你需要交代任务的顺序,使得所有的任务尽早执行完毕。注意,不能同时给2个部下交代任务,但是部下可以同时执行各自的任务。

【输入格式】

输入数据包括多组数据,每组数据的第一行为部下的个数N(1≤N≤1000);以下N行有2个正整数B和J(1≤B≤1000,1≤J≤1000),即交代任务的时间和执行任务的时间。输入结束标志符为N=0。

【输出格式】commando.in

对于每组数据,输出(以第i组数据为例):

Case i: Time

【样例输入】commando.out

3
2 5
3 2
2 1
3
3 3
4 4
5 5
0

【样例输出】

Case 1: 8
Case 2: 15

【来源】

From UVa 11729.

思路:贪心,显而易见,我们会让执行任务时间较长的优先执行。

证明:

假如我们交换两个相邻的任务X和Y(交换之前X在Y之前,交换后X在Y之后)

不难发现这对于其他任务的完成时间没有影响,那这两个任务呢?

  • 情况1:交换之前,X比Y先结束。

    不难发现,交换之后X的结束时间延后,Y的结束时间提前,不会让答案更优。

  • 情况2:交换之前,X比Y先结束,因此交换后答案不会变好的充要条件是:交换后X的结束时间不比交换前Y的结束时间早(交换后Y的结束时间肯定变早了)。

    这个条件可以写成B[Y]+B[X]+J[X]>=B[X]+B[Y]+J[Y],简化得 J[X]>=J[Y]。这就是我们贪心的依据。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 1010
using namespace std;
struct nond{
int tell,work;
}v[MAXN];
int n,num,ans;
int cmp(nond a,nond b){
return a.work>b.work;
}
int main(){
freopen("commando.in","r",stdin);
freopen("commando.out","w",stdout);
while(scanf("%d",&n)&&n!=){
num++;ans=;
printf("Case %d: ",num);
for(int i=;i<=n;i++){
scanf("%d%d",&v[i].tell,&v[i].work);
ans+=v[i].tell;
}
sort(v+,v++n,cmp);
printf("%d\n",ans+v[n].work);
}
}

cogs 1446. [Commando War,Uva 11729]突击战的更多相关文章

  1. UVa 11729 突击战

    https://vjudge.net/problem/UVA-11729 题意:有n个部下,每个部下需要完成一项任务.第i个部下需要你话B分钟交代任务,然后立刻执行J分钟完成任务.安排交代任务顺序并计 ...

  2. Uva 11729 Commando War (简单贪心)

    Uva 11729  Commando War (简单贪心) There is a war and it doesn't look very promising for your country. N ...

  3. 贪心 UVA 11729 Commando War

    题目传送门 /* 贪心:按照执行时间长的优先来排序 */ #include <cstdio> #include <algorithm> #include <iostrea ...

  4. UVA 11729 - Commando War(贪心 相邻交换法)

    Commando War There is a war and it doesn't look very promising for your country. Now it's time to ac ...

  5. uva----11729 Commando war (突击战争)

    G Commando War Input: Standard Input Output: Standard Output “Waiting for orders we held in the wood ...

  6. Commando War

    Commando War“Waiting for orders we held in the wood, word from the front never cameBy evening the so ...

  7. 算法 UVA 11729

     例2:假设当前小光有n个部下,每个部下需要完成一项任务.第i个部下需要小光花Bi分钟交代任务,然后他会立刻独立地.无间断地执行Ji分钟后完成任务.小光需要选择交代任务的顺序,使得所有任务尽早执行完毕 ...

  8. Java实现蓝桥杯突击战

    突击战 你有n个部下,每个部下需要完成一项任务.第i个部下需要你花Bi分钟交待任务,然后他会立刻独立地. 无间断地执行Ji分钟后完成任务.你需要选择交待任务的顺序, 使得所有任务尽早执行完毕(即最后一 ...

  9. UVa 11729 Commando War 突击战

    你有 n 个部下,每个部下需要完成一个任务.第 i 个部下需要你花 Bi 分钟交待任务,然后他会立刻独立地.无间断地执行 Ji 分钟后完成任务.你需要选择交待任务的顺序,使得所有任务尽早执行完毕(即最 ...

随机推荐

  1. CMD应用 qtp/winshell/cmd的交互

    =================================================================== '採用windows.shell的 sendkeys 方式: s ...

  2. Android Shape使用

    说明 在Android开发中,使用shape可以很方便的帮我们画出想要的背景,相对于png图片来说,使用shape可以减少安装包的大小,而且能够更好的适配不同的手机. 使用 先贴出官网上的说明: &l ...

  3. Car Talk2

    #! /usr/bin/python # -*- coding: utf-8 -*- # # # “Recently I had a visit with my mom and we realized ...

  4. Asp.Net中使用水晶报表(中)

    Asp.Net中使用水晶报表(中) 使用Pull模式 我们将通过下面的这些步骤来通过Pull模式来执行水晶报表 1.首先创建rpt文件,并使用水晶报表设计接口设置一些必须的数据连接. 2.拖放一个 C ...

  5. OpenGL编程(一)渲染一个指定颜色的背景窗口

    上次已经搭好了OpenGL编程的环境.已经成功运行了第一个程序.可只是照搬书上的代码,并没弄懂其中的原理.这次通过一个小程序来解释使用GLUT库编写OpenGL程序的过程. 程序的入口 与其他程序一样 ...

  6. Linux FTP客户端

    1.File Zilla File Zilla是一个开源的,跨平台的Linux FTP客户端.File Zilla有一个标签式的用户界面,允许用户查看正在传输的文件的所有细节.File Zilla是通 ...

  7. Windows远程登录Linux

    本文以Ubuntu Kylin1404为例,说明如何通过Windows远程登录Linux. 首先,要确保Ubuntu上SSH服务执行正常.默认情况下,Ubuntu已装有SSHclient.比方输入ss ...

  8. 从零開始怎么写android native service?

    从零開始怎么写android native service Android service对于从事android开发的人都不是一个陌生的东西,非常多人可能会认为服务非常easy. 服务是简单,由于复杂 ...

  9. 大数据时代的新BI系统架构发展趋势

    商业智能(BI,Business Intelligence).它是一套完整的解决方式,用来将企业中现有的数据进行有效的整合,高速准确的提供报表并提出决策根据.帮助企业做出明智的业务经营决策.     ...

  10. 计数排序、桶排序python实现

    计数排序在输入n个0到k之间的整数时,时间复杂度最好情况下为O(n+k),最坏情况下为O(n+k),平均情况为O(n+k),空间复杂度为O(n+k),计数排序是稳定的排序. 桶排序在输入N个数据有M个 ...