你有n个部下,每个部下需要完成一项任务。第i个部下需要你花Bi分钟交待任务,然后他会立刻独立地、无间断地执行Ji分钟后完成任务。你需要选择交待任务的顺序,使得所有任务尽早执行完毕(即最后一个执行完的任务应尽早结束)。注意,不能同时给两个部下交待任务,但部下们可以同时执行他们各自的任务。

【输入格式】

输入包含多组数据,每组数据的第一行为部下的个数N(1≤N≤1 000);以下N行每行两个正整数BJ(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的更多相关文章

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

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

  2. uva11729 - Commando War(贪心)

    贪心法,执行任务的时间J越长的应该越先交待.可以用相邻交换法证明正确性.其实对于两个人,要让总时间最短,就要让同一时间干两件事的时间最长. #include<iostream> #incl ...

  3. Uva11729 Commando War

    相邻两个士兵交换顺序,不会对其他的有所影响,贪心考虑两两之间交换策略即可. sort大法好.印象中这类排序题里有一种会卡sort,只能冒泡排序,然而到现在还没有遇到 /**/ #include< ...

  4. 【题解】 UVa11729 Commando War

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

  5. 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 ...

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

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

  7. 贪心 UVA 11729 Commando War

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

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

    1446. [Commando War,Uva 11729]突击战 ★   输入文件:commando.in   输出文件:commando.out   简单对比时间限制:1 s   内存限制:64 ...

  9. Commando War

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

随机推荐

  1. [Protractor] Locators and Suites in Protractor

    HTML: <ul class="list"> <li ng-repeat="item in itmes" ng-click="se ...

  2. 自增运算a++和++b(1)

    #include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar code f[]={0x3f,0 ...

  3. LR脚本自定义显示Controller虚拟用户状态

    在场景监控的过程中,想知道场景运行时Vusers的运行状态以及每一个Vuser虚拟用户在本次场景运行的过程共迭代了多少次,那么就需要在VuGen脚本中自定义显示虚拟用户状态信息. 代码如下: stat ...

  4. kaggle之识别谷歌街景图片中的字母

    https://github.com/lijingpeng/kaggle/tree/master/competitions/image_recognize 识别谷歌街景图片中的字母 street-vi ...

  5. 注册界面的优化之ActionBar组件的应用之(一)ActionBar组件的布局实现

    开发步骤:  在res下menu文件夹中创建一个actionbar_menu_register.xml菜单资源文件  在资源文件中添加标签设置一个或多个ActionBar功能选项 //action ...

  6. Android Studio稍微较新的版本下载

    ALL ANDROID STUDIO PACKAGES-V1.4.1.2422023 Select a specific Android Studio package for your platfor ...

  7. myeclipse8.6 for spring环境配置

     

  8. FZU1327 优先队列

    Problem 1327 Blocks of Stones II Accept: 318    Submit: 881Time Limit: 1000 mSec    Memory Limit : 3 ...

  9. 解决MySQL中文乱码的问题

    遇到中文乱码问题,首先用status命令检查数据库的配置,如下: 上图会显示数据库配置的各项信息. 还可以用 show create database XXX,来显示创建数据库的时候的编码设置. 一般 ...

  10. 淘管 ERP项目与淘宝对接中产生的若干问题及处理办法

    现象:ERP绑定淘宝后,下载商品数据时如果成功,ajax不断尝试重发. 原因:  /app/taoapi/lib/top/TopClient.php 中的curl()方法成功后,返回空值,而前端收到空 ...