【贪心】【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 ...
随机推荐
- 状态模式----C++实现
状态模式 定义: 允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类. 实用性: 1. 一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为. 2. 一个操作中含 ...
- 关于vi不正常退出产生的swp文件
关于vi不正常退出产生的swp文件 非正常关闭vi编辑器时会生成一个.swp文件 关于swp文件 使用vi,经常可以看到swp这个文件,那这个文件是怎么产生的呢,当你打开一个文件,vi就会生成这么 ...
- Spring项目的建立-移植流程(非入门教程)
Creat by Zhou yong in 2016/4/15/19:00 jar包 java 1.7 tomcat的两个jar包 2个文件上传的jar包 json支持的jar包 hibernate- ...
- IoC容器Autofac之实例优化(三)
回顾之前的代码 //这个类的作用是筛选出MPG类型的电影 public class MPGMovieLister { public Movie[] GetMPG() { var finder = Mo ...
- .net 地址栏传中文乱码 的解决方法
1.设置web.config文件. <system.web> ...... <globalization requestEncoding="gb2312" res ...
- JAVA加密
[源地址http://www.iteye.com/topic/1122076/] 加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信 ...
- iOS开发~interface Builder(简称 IB) 界面构建器
1.interface Builder 设置界面 1.1 是什么? 一个可视化的界面编辑工具软件,在xcode4之后整合到了xcode中 1.2 作用? 通过可视化的界面设置,能够少写或不写代码而完成 ...
- IOS开发几何类方法 CGGeometry.h文件
CGGeometry.h文件是用C语言实现的一个封装了许多常用几何方法的文件. 一.几个常用结构体 struct CGPoint { CGFloat x; CGFloat y; }; 定义一个点,设置 ...
- 一次$.getJSON不执行的记录
别人的代码,拿过来调,发现修改功能都不能用,修改时通过ajax发json获取数据的,看chrome开发者工具发现有发送数据,也有返回值: 发起请求并获取数据,发现回调函数不执行! $.getJSON( ...
- UVA 227 Puzzle - 输入输出
题目: acm.hust.edu.cn/vjudge/roblem/viewProblem.action?id=19191 这道题本身难度不大,但输入输出时需要特别小心,一不留神就会出问题. 对于输入 ...