• 51Nod


    51Nod - 1099 任务执行顺序

    有N个任务需要执行,第i个任务计算时占R[i]个空间,而后会释放一部分,最后储存计算结果需要占据O[i]个空间(O[i] < R[i])。
     
    例如:执行需要5个空间,最后储存需要2个空间。给出N个任务执行和存储所需的空间,问执行所有任务最少需要多少空间。
    Input
    第1行:1个数N,表示任务的数量。(2 <= N <= 100000)
    第2 - N + 1行:每行2个数R[i]和O[i],分别为执行所需的空间和存储所需的空间。(1 <= O[i] < R[i] <= 10000)
    Output
    输出执行所有任务所需要的最少空间。
    Input示例
    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
    Output示例
    135

    题解: 

        想根据二分搜索来找答案, 但是Check函数没有写错。(Check,按照最大的r来模拟, 这种解法是有问题的。)

        采用discussion 中的解法: 所有的 O的sum,加上 argmin (r - o) 

    #include <iostream> 
    #include <cstdlib> 
    #include <cstdio> 
    using namespace std; 
    
    int main(){
    	int n, r, o, l, ans; 
    	while(scanf("%d", &n) != EOF){
    		if(n == 0){
    			printf("0
    "); 
    			continue; 
    		}
    		ans = 0; 
    		l = 0x3f3f3f; 
    		for(int i=0; i<n; ++i){
    			scanf("%d %d", &r, &o); 
    			ans += o; 
    			l = min(l, r - o); 
    		}
    		ans += l; 
    		printf("%d
    ", ans );
    	}
    	return 0; 
    }
    

      

  • 相关阅读:
    算法-在字符串中删除特定的字符或字符串
    Linux 下的7种文件类型
    TCP/IP协议、三次握手、四次挥手
    8、VUE自定义组件
    7、VUE事件
    6、VUE指令
    Redis高级功能-1、高并发基本概述
    5、插值
    4、VUE生命周期
    3、Vue实例的属性
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/6910428.html
Copyright © 2020-2023  润新知