zoukankan      html  css  js  c++  java
  • 51nod贪心算法入门-----任务分配问题

    任务执行顺序

    有N个任务需要执行,第i个任务计算时占R[i]个空间,而后会释放一部分,最后储存计算结果需要占据O[i]个空间(O[i] < R[i])。

    分析:

         可以抽象成,从一个整数开始,每次减去a,再加上b (a,b都是正数),要求每次操作都不产生负数。
          令a[i] = R[i], b[i] = R[i] – O[i],O[i] < R[i],有0<b[i]<a[i]。 所以尽管每次有减有加,但是加的没有减的多,总数在不断减小。所以——按照b[i]递增的顺序排序,是最“有利”的。

    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct point{
        int r,o;
    }p[100001];
    int cmp(point x,point y){
        return x.o>y.o;
    }
    int main(){
        //freopen("C://Users//Administrator//Desktop//duipai2//p1099t11in.txt","r",stdin);
        //freopen("C://Users//Administrator//Desktop//duipai2//out1.txt","w",stdout);
        int i,N,sum,ans;
        while(~scanf("%d",&N)){
            for(i=0;i<N;i++){
                scanf("%d%d",&p[i].r,&p[i].o);
                p[i].o=p[i].r-p[i].o;
            }
            sort(p,p+N,cmp);
            sum=p[0].r;
            ans=p[0].r;
            for(i=0;i<N;i++){
                if(ans<p[i].r){
                    sum=sum+p[i].r-ans;
                    ans=p[i].r;
                }
                    ans=ans-p[i].r+p[i].o;
            }
            printf("%d
    ",sum);
        }
    }
  • 相关阅读:
    jQuerychicun
    css3动画
    app开发,H5+CSS3页面布局小tips
    函数基础
    函数
    冒泡排序
    关于Vue+iview的前端简单的导入数据(excel)
    关于Vue+iview的简单下拉框滚动加载
    ES6中set的用法回顾
    百度地图api设置点的自定义图标不显示
  • 原文地址:https://www.cnblogs.com/OMG-By/p/5303411.html
Copyright © 2011-2022 走看看