zoukankan      html  css  js  c++  java
  • 台州 OJ 1555 Chores 贪心+深搜

    给 n 个任务,有些任务会有前驱任务,不相关的任务可以同时做,求把这些任务做完的最少时间是多少。

    比较水的一道题,任务能尽早开始就尽早开始做(从时间点0开始),如果有前驱任务,就要把前驱任务完成的时间也加上,完成时间最长的任务的时间就是答案

    代码:

    #include <iostream>
    #include <cstring>
    #include <vector>
    using namespace std;
    
    const int MAX = 10005;
    const int INF = 0x3fffffff;
    
    vector<int> pre[MAX];
    int value[MAX];
    int finish[MAX];
    int n, maxn = 0;
    
    int dfs(int i, int now);
    
    int main(){
        //freopen("input.txt", "r", stdin);
        scanf("%d", &n);
        for(int i=1; i<=n; i++){
            scanf("%d", value+i);
            int m;
            scanf("%d", &m);
            for(int j=1; j<=m; j++){
                int t;
                scanf("%d", &t);
                pre[i].push_back(t);
            }
        }
        
        memset(finish, -1, sizeof(finish));
        for(int i=1; i<=n; i++){
            maxn = max(maxn, dfs(i, 0));
        }
    //    for(int i=1; i<=n; i++){
    //        cout << finish[i] << " ";
    //    }
        cout << maxn;
    } 
    
    int dfs(int i, int now){
        if(finish[i] != -1)
            return finish[i];
        int finishTime = value[i];    
        for(int j=0; j<pre[i].size(); j++){
            finishTime = max(finishTime, dfs(pre[i][j], 0) + value[i]);    //有前驱任务,就加上前驱任务完成的时间 
        }
        finish[i] = finishTime;
        return finish[i];
    }
  • 相关阅读:
    Thrift --- 支持双向通信
    Go -- 配置监控系统
    Go -- RPC 之 Thrift
    Go -- 一致性哈希算法
    Go -- runtime.Gosched()的作用分析
    Go -- import使用及. _的作用解析
    BNF 和 ABNF 扩充巴科斯范式 了解
    转 HTTP.SYS 详解
    转 HTTP/2: The Long-Awaited Sequel
    网站分析
  • 原文地址:https://www.cnblogs.com/lighter-blog/p/7239233.html
Copyright © 2011-2022 走看看