zoukankan      html  css  js  c++  java
  • 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!=0){
            num++;ans=0;
            printf("Case %d: ",num);
            for(int i=1;i<=n;i++){
                scanf("%d%d",&v[i].tell,&v[i].work);
                ans+=v[i].tell; 
            }
            sort(v+1,v+1+n,cmp);
            printf("%d
    ",ans+v[n].work);
        }
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    The lexer hack
    How Clang handles the type / variable name ambiguity of C/C++
    python
    基于asp.net + easyui框架,一步步学习easyui-datagrid——界面(一)
    程序员最该看的30本书---------------------------国外编辑推荐
    DirectX 学习经典参考书籍 电子书下载
    基于asp.net+ easyui框架,js提交图片,实现先上传图片再提交表单
    请问JAVA三层架构,持久层,业务层,表现层,都该怎么理解?和MVC三层模型有什么区别
    对java框架的几点认识
    J2EE入门必备
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7724489.html
Copyright © 2011-2022 走看看