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. c#程序中使用&quot;like“查询access数据库查询为空的问题

    今天,在开发的过程中发现了一个特别奇怪的问题:access中like查询时候.在Access数据库中运行,发现能够查询出结果.这是在数据库上运行.select * from KPProj where ...

  2. HDU 5399 Too Simple (2015年多校比赛第9场)

    1.题目描写叙述:点击打开链接 2.解题思路:本题分情况讨论.比赛时候真是想的太简单了.以为就是(n!)^(cnt-1). 终于无限WA. 本题有几个特殊情况须要额外推断. 首先,假设输入的时候.有某 ...

  3. NAS是什么

    NAS是什么 简介 NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”.它是一种专用数据存储服务器. ...

  4. 前端图像 裁剪利器 JQuerJjcrop+裁剪图像保存教程

    由于一个项目中需要用到用户头像上传裁剪组件,这两天便网上找了一些相关插件,主要由以下几种插件: 1.Image Cropper:http://elemefe.github.io/image-cropp ...

  5. Kinect 人机交互开发实践

    Kinect for Windows SDK 骨骼追踪 —— 对在Kinect视野范围内移动的一个或两个人进行骨骼追踪,可追踪到人体的20个节点 深度摄像头 —— 通过深度传感器获取到视野内的环境三维 ...

  6. Orientdb基本操作

    https://blog.csdn.net/clj198606061111/article/details/82314459

  7. [JSOI2008]火星人 hash+splay

    题目描述: 现在,火星人定义了一个函数 LCQ(x, y)LCQ(x,y),表示:该字符串中第 xx 个字符开始的字串,与该字符串中第 yy 个字符开始的字串,两个字串的公共前缀的长度.比方说,LCQ ...

  8. Dynamic Rankings(分块)

    P2617 Dynamic Rankings 题目描述 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i ...

  9. 深入理解void以及void指针的含义

    void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型. void指针使用规范 ①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值. ...

  10. HBase为什么快 HBase原理。 HBase几个问题

    背景色表示可以自己做实验搞定 1 模拟一组数据 1.2.3.4.5.6.7.8.9.10     1 入 限定符 'one'     2 入 'two'     3 入 'three'     4 f ...