zoukankan      html  css  js  c++  java
  • 任务执行顺序

    有N个任务需要执行,第i个任务计算时占R[i]个空间,而后会释放一部分,最后储存计算结果需要占据O[i]个空间(O[i] < R[i])。例如:执行需要5个空间,最后储存需要2个空间。给出N个任务执行和存储所需的空间,问执行所有任务最少需要多少空间。

    输入

    第1行:1个数N,表示任务的数量。(2 <= N <= 100000)
    第2 - N + 1行:每行2个数R[i]和O[i],分别为执行所需的空间和存储所需的空间。(1 <= O[i] < R[i] <= 10000)
    输出
     
    输出执行所有任务所需要的最少空间。
     
    输入示例

    20
    14 1
    2 1
    11 3
    20 4
    7 5
    6 5
    20 7
    19 8
    9 4
    20 10
    18 11
    12 6
    13 12
    14 9
    15 2
    16 15
    17 15
    19 13
    20 2
    20 1

    输出示例

    135

     贪心思想:当所有任务都分配完了之后,我们发现我们最少都需要每个

    存储所需的空间之和,然后我们找一个相对差(执行所需的空间和存储所需的空间的差)最小的任务,加上相对差就是最值
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 using namespace std;
     5 const int maxn=100005;
     6 struct node{
     7     int l, r, cz;
     8 }a[maxn];
     9 bool cmp(node a, node b){
    10     return a.cz<b.cz;
    11 }
    12 int main(){
    13     int n, Min_cz;
    14     long long ans=0;
    15     cin >> n;
    16     for(int i=0; i<n; i++){
    17         cin>>a[i].l>>a[i].r;
    18         ans+=a[i].r;
    19         a[i].cz=a[i].l-a[i].r;
    20     }
    21     sort(a, a+n, cmp);
    22     ans+=a[0].cz;    //直接加上最小差值
    23     cout<<ans<<endl;
    24 
    25     return 0;
    26 }
  • 相关阅读:
    mysql中中文乱码问题
    jdbc操作数据库
    PreparedStatement解决sql注入问题
    向mysql数据库中插入大二进制文件和大文本
    Statement及PreparedStatement执行多个sql
    自定义EL函数
    自定义标签
    dom4j操作xml对象
    mysql中中文乱码问题
    jdbc操作数据库
  • 原文地址:https://www.cnblogs.com/ledoc/p/6559764.html
Copyright © 2011-2022 走看看