【贪心】【Uva11729】 Commando War
你有n个部下,每个部下需要完成一项任务。第i个部下需要你花Bi分钟交待任务,然后他会立刻独立地、无间断地执行Ji分钟后完成任务。你需要选择交待任务的顺序,使得所有任务尽早执行完毕(即最后一个执行完的任务应尽早结束)。注意,不能同时给两个部下交待任务,但部下们可以同时执行他们各自的任务。
【输入格式】
输入包含多组数据,每组数据的第一行为部下的个数N(1≤N≤1 000);以下N行每行两个正整数B和J(1≤B≤10 000,1≤J≤10 000),即交待任务的时间和执行任务的时间。输入结束标志为N=0。
【输出格式】
对于每组数据,输出所有任务完成的最短时间。
【样例输入】
3
2 5
3 2
2 1
3
3 3
4 4
5 5
0
【样例输出】
Case 1: 8
Case 2: 15
贪心先画几个图看看流程 这种线段型图很实用
显然红色时间是必须有的,总时间的长短在于蓝色的摆放
从图中情不自禁的就有感觉 蓝色长的先选即可
、
显然更优
证明
对于k1士兵 k2士兵 假设J[k1]>J[k2]
若k2 在前面 总时间为 T=(B[k2]+B[k1]+J[k1])
若k1 在前面 总时间为T=MAX(B[k1]+J[k1],B[k1]+B[k2]+J[k2])
无论MAX 选哪个 都比T要小 所以k1最好在k2前面贪心策略得证
代码如下:
#include<cstdio>
#include<algorithm>
#include<cstdlib>
using namespace std;
int CASE=0;
typedef struct node
{
int b;
int j;
}node;
node p[1010];
int cmp(const void *i,const void *k)
{
node *ii=(node *)i,*kk=(node *)k;
return kk->j-ii->j;
}
int main()
{
int N,ans,k;
// freopen("a.in","r",stdin);
// freopen("a.out","w",stdout);
while(scanf("%d",&N)!=EOF&&N!=0)
{
CASE++;
ans=0;k=0;
for(int i=1;i<=N;i++)
scanf("%d%d",&p[i].b,&p[i].j);
qsort(p+1,N,sizeof(p[0]),cmp);
for(int i=1;i<=N;i++)
{
k=k+p[i].b;
if(k+p[i].j>ans)
ans=k+p[i].j;
}
printf("Case %d: %d\n",CASE,ans);
}
return 0;
}
思考题:
若设置一个总时间T 问最多能让多少人完成任务?
需要再思考一下
【贪心】【Uva11729】 Commando War的更多相关文章
- uva----11729 Commando war (突击战争)
G Commando War Input: Standard Input Output: Standard Output “Waiting for orders we held in the wood ...
- uva11729 - Commando War(贪心)
贪心法,执行任务的时间J越长的应该越先交待.可以用相邻交换法证明正确性.其实对于两个人,要让总时间最短,就要让同一时间干两件事的时间最长. #include<iostream> #incl ...
- Uva11729 Commando War
相邻两个士兵交换顺序,不会对其他的有所影响,贪心考虑两两之间交换策略即可. sort大法好.印象中这类排序题里有一种会卡sort,只能冒泡排序,然而到现在还没有遇到 /**/ #include< ...
- 【题解】 UVa11729 Commando War
题目大意 你有n个部下,每个部下需要完成一项任务.第i个部下需要你花Bj分钟交代任务,然后他就会立刻独立地.无间断地执行Ji分钟后完成任务.你需要选择交代任务的顺序,使得所有任务尽早执行完毕(即最后一 ...
- 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 (简单贪心)
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 ...
- cogs 1446. [Commando War,Uva 11729]突击战
1446. [Commando War,Uva 11729]突击战 ★ 输入文件:commando.in 输出文件:commando.out 简单对比时间限制:1 s 内存限制:64 ...
- Commando War
Commando War“Waiting for orders we held in the wood, word from the front never cameBy evening the so ...
随机推荐
- Linux入门基础 #8:Linux拓展权限
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
- linux hash_map
在linux下的hash_map hash_map本身以前本身不属于标准库,是后来引入的.有两种可能:一种可能它被放在了stdext名空间里,那么你就要使用using namespace stdext ...
- StaggeredGridView+universal-image-loader载入网路图片实现瀑布流
StaggeredGridView 开源lib https://github.com/maurycyw/StaggeredGridView 文章demo下载地址 http://download.c ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- GridView控件中插入自定义删除按钮并弹出确认框
GridView控件中插入自定义删除按钮,要实现这个功能其实有多种方法,这里先记下我使用的方法,以后再添加其他方法. 一.实现步骤 1.在GridView中添加模板列(TemplateField). ...
- (转)document.cookie.indexof的解释
代码:function getCookie(c_name){ if(document.cookie.length > 0) { c_start = document.cookie.indexof ...
- C#winform修改IP,dns
/// 将IP,DNS设置为自动获取 /// private void setDHCP() { string _doscmd = & ...
- 拥有iframe页面的子父类窗口调用JS的方法,并且注意的事项
一.前言 我页面用的是EasyUI的弹出窗口里面嵌入一个iframe.第一:父窗口打开子窗口是一个新增用户信息的iframe子页面,点击保存后,子窗口iframe则去调用父窗口的function cl ...
- Gengxin讲STL系列目录
引言:有人催我写关于STL的博客#(滑稽) STL嘛,昨晚有人一直逼问我STL名字的由来——STL = Standard Template Library,标准模板库,惠普实验室开发的一 ...
- (转) Special members
原地址:http://www.cplusplus.com/doc/tutorial/classes2/ Special members [NOTE: This chapter requires p ...