首页 > 其他分享 >2050 并行课程 III

2050 并行课程 III

时间:2024-02-27 21:22:54浏览次数:27  
标签:2050 cnt finish int time 并行 head ans III

原题链接

题解:拓扑排序+动态规划

我们首先根据给定的先修课程关系,构建出一个有向无环图。已知每个结点的时间都是time[i-1]+其入度结点的最大值。最后比较出最大的出度为零的结点的时间

code

 

class Solution {
public:
    static const int N=5e4+5;
    int head[N],Next[N],to[N],finish[N],sum[N],m,cnt=0,que[N];
    void build(int x,int y){
        Next[++cnt]=head[x];
        to[cnt]=y;
        head[x]=cnt;
        sum[y]++;
    }
    int minimumTime(int n, vector<vector<int>>& relations, vector<int>& time) {
        m=relations.size();
        int l=0,r=0,ans=0;
        for (int i=0;i<m;i++){
            build(relations[i][0],relations[i][1]);
        }
        for (int i=1;i<=n;i++)
            if (sum[i]==0){
                finish[i]=time[i-1];
                que[r++]=i;
            }
        while (l<r){
            int from=que[l++];
            for (int i=head[from];i>0;i=Next[i]){
                if (finish[from]>finish[to[i]]) finish[to[i]]=finish[from];  //必须先更改再进行累加(time[i-1]的值可能比入度结点的值还要大,就起不到累加的效果)
                if (--sum[to[i]]==0){
                    que[r++]=to[i];
                    finish[to[i]]+=time[to[i]-1];
                }
            }
            if (head[from]==0) ans=finish[from]>ans ? finish[from] : ans;
        }
        return ans;
    }
};

 

标签:2050,cnt,finish,int,time,并行,head,ans,III
From: https://www.cnblogs.com/purple123/p/18038388

相关文章

  • 卡码java基础课 | 3.A+B问题III
    学习内容:if语句关系运算符逻辑运算符break语句continue语句重点归纳:break和continue的用法和区别break:跳出循环continue:直接从头开始执行循环内结构,跳过continue后剩余的代码例题:解:点击查看代码importjava.util.Scanner;publicclassMain{publicstaticv......
  • 基于sigma-delta和MASHIII调制器的频率合成器simulink建模与仿真
    1.算法运行效果图预览       其误差当系统进入稳定状态的时候,频率误差就小于1E-9,并且随着频率的增加,其稳定性将更好。 2.算法运行软件版本matlab2022a 3.算法理论概述       频率合成器是现代无线通信系统中的关键组件,用于生成精确且可调的频率信......
  • 代码随想录算法训练营第二十五天| 216.组合总和III 17.电话号码的字母组合
    组合总和III题目链接:216.组合总和III-力扣(LeetCode)思路:仿照昨天的递归模板写的,同样是for循环横向遍历,递归纵向遍历。注意当k>n时要直接跳出,否则会判断栈溢出。额外发现一个问题就是在累加sum时,用for(autoi:path)sum+=path[i];会出现奇怪数字,原因是auto遍历用法错误,正确写......
  • 代码随想录算法训练营第二十五天 | 17.电话号码的字母组合 , 216.组合总和III
    216.组合总和III 已解答中等 相关标签相关企业 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:只使用数字1到9每个数字 最多使用一次返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回......
  • 力扣 dfs之 437. 路径总和 III
    给定一个二叉树的根节点root ,和一个整数targetSum,求该二叉树里节点值之和等于targetSum的路径的数目。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 示例1:输入:root=[10,5,-3,3,2,null,11,3,-2,null,1],target......
  • Bubbliiiing版本yolov7 c++opencv dnn部署
    使用B导的yolov7代码部署,代码地址:https://github.com/bubbliiiing/yolov7-pytorch 模型的的训练看B导即可,up主地址:Bubbliiiing的博客_CSDN博客-神经网络学习小记录,睿智的目标检测,有趣的数据结构算法领域博主 模型训练完成之后,在predict.py中设置mode="export_onnx"即可......
  • 做题笔记 III
    \(1\sim100\)的题目在做题笔记II。\(\texttt{Le0**an}\):我写了四篇做题笔记、一篇生成函数详解和一篇模拟赛复盘了!\(\texttt{xl****13}\):我写了零篇做题笔记了!!!111\(101\sim125\)\(\color{blue}(101)\)ARC172ELast9Digits难度\(^*2400\)。数论抽象题。有一个结......
  • 任务并行库 (TPL)
    原文链接:https://learn.microsoft.com/zh-cn/dotnet/standard/parallel-programming/task-parallel-library-tpl?redirectedfrom=MSDN         https://www.cnblogs.com/zhaotianff/p/10458075.html 任务并行库(TPL)是 System.Threading 和 System.Threa......
  • Porsche Piwis 3 Tester III V43.300.22 + V38.250 Diagnostic Tool Support Diagnosi
    Greatnews!ThePorschePiwis3TesterIIIV43.300.22+V38.250DiagnosticToolhasjustbeenupdatedwithnewsoftwareversions.ThislatestversioncoversalloldandnewPorschecarsupto2024,makingitacomprehensivediagnostictoolforprofessiona......
  • 在 Effect 中直接请求数据很容易导致“网络瀑布”。当你渲染父组件时,它会请求一些数据
    在Effect中直接请求数据很容易导致“网络瀑布”。当你渲染父组件时,它会请求一些数据,再渲染子组件,然后重复这样的过程来请求子组件的数据。如果网络不是很快,这将比并行请求所有数据要慢得多。如何理解?在React中,当我们在Effect(例如useEffectHook)中直接请求数据时,如果数据请求......