cogs 1446. [Commando War,Uva 11729]突击战
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]突击战的更多相关文章
- UVa 11729 突击战
https://vjudge.net/problem/UVA-11729 题意:有n个部下,每个部下需要完成一项任务.第i个部下需要你话B分钟交代任务,然后立刻执行J分钟完成任务.安排交代任务顺序并计 ...
- Uva 11729 Commando War (简单贪心)
Uva 11729 Commando War (简单贪心) There is a war and it doesn't look very promising for your country. N ...
- 贪心 UVA 11729 Commando War
题目传送门 /* 贪心:按照执行时间长的优先来排序 */ #include <cstdio> #include <algorithm> #include <iostrea ...
- 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 ...
- uva----11729 Commando war (突击战争)
G Commando War Input: Standard Input Output: Standard Output “Waiting for orders we held in the wood ...
- Commando War
Commando War“Waiting for orders we held in the wood, word from the front never cameBy evening the so ...
- 算法 UVA 11729
例2:假设当前小光有n个部下,每个部下需要完成一项任务.第i个部下需要小光花Bi分钟交代任务,然后他会立刻独立地.无间断地执行Ji分钟后完成任务.小光需要选择交代任务的顺序,使得所有任务尽早执行完毕 ...
- Java实现蓝桥杯突击战
突击战 你有n个部下,每个部下需要完成一项任务.第i个部下需要你花Bi分钟交待任务,然后他会立刻独立地. 无间断地执行Ji分钟后完成任务.你需要选择交待任务的顺序, 使得所有任务尽早执行完毕(即最后一 ...
- UVa 11729 Commando War 突击战
你有 n 个部下,每个部下需要完成一个任务.第 i 个部下需要你花 Bi 分钟交待任务,然后他会立刻独立地.无间断地执行 Ji 分钟后完成任务.你需要选择交待任务的顺序,使得所有任务尽早执行完毕(即最 ...
随机推荐
- 2、Python列表和元组
2.Python序列 序列是一种数据存储方式,类似于C语言的数组.简单的说序列是一块用来存储多个值的连续内存空间,同一个序列的元素通常是相关的. Python中常用的序列结构有列表.元组.字典.字符串 ...
- 几种常见sqlalchemy查询:
#简单查询 print(session.query(User).all()) print(session.query(User.name, User.fullname).all ...
- 8.变量内存CPU原理
编译器先明确是什么类型,然后明确变量名,变量表管理所有的变量,不在变量表内部的变量不能引用.每个变量对应一整块内存 a+1所计算出来的值在寄存器中,只有变量可以被赋值,变量必须在内存里面 c语言内嵌汇 ...
- BZOJ 3223 Splay区间翻转
思路: 区间翻转的裸题 终于tm理解splay了-- //By SiriusRen #include <cstdio> #include <cstring> #include ...
- jsp登录会话
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- IE(8~11+) 可用右键加速器
必应词典工具 立即安装: 网络安装:http://dict.bing.com.cn/tools_dl.aspx?dl=ie8acc&mkt=ZH-CN 开发示例: <?xml versi ...
- OpenGL编程逐步深入(十一)组合变换
准备知识 在前面的几节教程中,我们已经提到过几种变换,为物体在3D世界中的移动提供的极大的灵活性.但是我们还有很多东西需要学习(如摄像机控制和透视投影),你可以已经猜到,我们需要將这些变换组合起来.在 ...
- C#共享WIFI能通过代码控制给连接的移动端分配IP么
用C#创建了一个虚拟WIFI,但是能不能通过代码来给连接上的移动端分配各自的IP.之前都是自动分配的IP.望大神们赐教 C#共享WIFI能通过代码控制给连接的移动端分配IP么 >> csh ...
- 《剑指offer》合并两个排序的链表
一.题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 二.输入描述 两个递增排序的链表 三.输出描述 合并成一个递增排序的链表 四.牛客网提供的框 ...
- 据统计WIN10用户已经比WIN7多
数据统计机构Netmarketshare今天发布了2018年12月份最新的桌面操作系统份额报告.在看似无休止的等待之后,微软在2018年取得了最后的胜利,不仅成为市值最高的公司,而且最新的Window ...